summaryrefslogtreecommitdiff
path: root/DCB
diff options
context:
space:
mode:
authorJohn Hubbard <jhubbard@nvidia.com>2019-04-21 17:09:24 -0700
committerJohn Hubbard <jhubbard@nvidia.com>2019-04-24 11:13:31 -0700
commit60b67c31fcad6d0dc9603a034994a12efe3d5202 (patch)
treec71d32e4b2a0d2a9770ac6b9add6ed49b0320e51 /DCB
parentd1be635fac4adad238916d28dde406c81ba564a8 (diff)
downloadopen-gpu-doc-60b67c31fcad6d0dc9603a034994a12efe3d5202.tar.xz
Open doc files, version 1 of everything
This copies over files from: http://download.nvidia.com/open-gpu-doc/ with a few overrides from local, as-yet-to-be-published files (generally just a file suffix and licensing tweak). Here's the script that was used to create this commit: wget -r http://download.nvidia.com/open-gpu-doc/ mv download.nvidia.com/open-gpu-doc/* . rm -rf download.nvidia.com/ find . -name index.html | xargs rm -f find . -name Thumbs.db | xargs rm -f find . -type f | grep -v \.git | xargs file | grep CRLF | cut -f1 -d: | xargs dos2unix for f in `find . -name 1 | cut -f2 -d "/"`; do pushd $f; mv 1/* .; popd; done find . -name 1 | xargs rmdir rm -rf Host-Fifo/volta/gv100 mkdir -p Host-Fifo/volta/gv100 cp $sw/docs/Public_Devel_Docs/release/Host-Fifo/volta/gv100/* Host-Fifo/volta/gv100/ rm Display-Ref-Manuals/gv100/dev_display.ref cp $sw/docs/Public_Devel_Docs/release/Display-Ref-Manuals/1/gv100/dev_display.ref \ Display-Ref-Manuals/gv100/dev_display.ref.txt git add . git mv DCB/DCB-4.0-Specification.html DCB/DCB-4.x-Specification.html git reset HEAD Display-Class-Methods/2 git reset HEAD DCB/2 git commit Reviewed-by: Andy Ritger
Diffstat (limited to 'DCB')
-rw-r--r--DCB/DCB-4.x-Specification.html9712
-rw-r--r--DCB/Stall_lock_dcb.jpgbin0 -> 41976 bytes
-rw-r--r--DCB/ThermalPower.gifbin0 -> 1401 bytes
-rw-r--r--DCB/ThermalPowerDisable.gifbin0 -> 1812 bytes
4 files changed, 9712 insertions, 0 deletions
diff --git a/DCB/DCB-4.x-Specification.html b/DCB/DCB-4.x-Specification.html
new file mode 100644
index 0000000..354f218
--- /dev/null
+++ b/DCB/DCB-4.x-Specification.html
@@ -0,0 +1,9712 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="generator" content="AsciiDoc 8.6.8" />
+<title>Device Control Block 4.0 Specification</title>
+<style type="text/css">
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+ font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+ font-family: Arial,Helvetica,sans-serif;
+}
+
+body {
+ margin: 1em 5% 1em 5%;
+}
+
+a {
+ color: blue;
+ text-decoration: underline;
+}
+a:visited {
+ color: fuchsia;
+}
+
+em {
+ font-style: italic;
+ color: navy;
+}
+
+strong {
+ font-weight: bold;
+ color: #083194;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #527bbd;
+ margin-top: 1.2em;
+ margin-bottom: 0.5em;
+ line-height: 1.3;
+}
+
+h1, h2, h3 {
+ border-bottom: 2px solid silver;
+}
+h2 {
+ padding-top: 0.5em;
+}
+h3 {
+ float: left;
+}
+h3 + * {
+ clear: left;
+}
+h5 {
+ font-size: 1.0em;
+}
+
+div.sectionbody {
+ margin-left: 0;
+}
+
+hr {
+ border: 1px solid silver;
+}
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+ul, ol, li > p {
+ margin-top: 0;
+}
+ul > li { color: #aaa; }
+ul > li > * { color: black; }
+
+.monospaced, code, pre {
+ font-family: "Courier New", Courier, monospace;
+ font-size: inherit;
+ color: navy;
+ padding: 0;
+ margin: 0;
+}
+
+
+#author {
+ color: #527bbd;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+#email {
+}
+#revnumber, #revdate, #revremark {
+}
+
+#footer {
+ font-size: small;
+ border-top: 2px solid silver;
+ padding-top: 0.5em;
+ margin-top: 4.0em;
+}
+#footer-text {
+ float: left;
+ padding-bottom: 0.5em;
+}
+#footer-badges {
+ float: right;
+ padding-bottom: 0.5em;
+}
+
+#preamble {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
+div.imageblock, div.exampleblock, div.verseblock,
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
+div.admonitionblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.admonitionblock {
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
+}
+
+div.content { /* Block element content. */
+ padding: 0;
+}
+
+/* Block element titles. */
+div.title, caption.title {
+ color: #527bbd;
+ font-weight: bold;
+ text-align: left;
+ margin-top: 1.0em;
+ margin-bottom: 0.5em;
+}
+div.title + * {
+ margin-top: 0;
+}
+
+td div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content + div.title {
+ margin-top: 0.0em;
+}
+
+div.sidebarblock > div.content {
+ background: #ffffee;
+ border: 1px solid #dddddd;
+ border-left: 4px solid #f0f0f0;
+ padding: 0.5em;
+}
+
+div.listingblock > div.content {
+ border: 1px solid #dddddd;
+ border-left: 5px solid #f0f0f0;
+ background: #f8f8f8;
+ padding: 0.5em;
+}
+
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
+ margin-right: 10%;
+ border-left: 5px solid #f0f0f0;
+ color: #888;
+}
+
+div.quoteblock > div.attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock > pre.content {
+ font-family: inherit;
+ font-size: inherit;
+}
+div.verseblock > div.attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
+div.verseblock + div.attribution {
+ text-align: left;
+}
+
+div.admonitionblock .icon {
+ vertical-align: top;
+ font-size: 1.1em;
+ font-weight: bold;
+ text-decoration: underline;
+ color: #527bbd;
+ padding-right: 0.5em;
+}
+div.admonitionblock td.content {
+ padding-left: 0.5em;
+ border-left: 3px solid #dddddd;
+}
+
+div.exampleblock > div.content {
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
+}
+
+div.imageblock div.content { padding-left: 0; }
+span.image img { border-style: none; }
+a.image:visited { color: white; }
+
+dl {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+dt {
+ margin-top: 0.5em;
+ margin-bottom: 0;
+ font-style: normal;
+ color: navy;
+}
+dd > *:first-child {
+ margin-top: 0.1em;
+}
+
+ul, ol {
+ list-style-position: outside;
+}
+ol.arabic {
+ list-style-type: decimal;
+}
+ol.loweralpha {
+ list-style-type: lower-alpha;
+}
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+div.compact ul, div.compact ol,
+div.compact p, div.compact p,
+div.compact div, div.compact div {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+}
+
+tfoot {
+ font-weight: bold;
+}
+td > div.verse {
+ white-space: pre;
+}
+
+div.hdlist {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+div.hdlist tr {
+ padding-bottom: 15px;
+}
+dt.hdlist1.strong, td.hdlist1.strong {
+ font-weight: bold;
+}
+td.hdlist1 {
+ vertical-align: top;
+ font-style: normal;
+ padding-right: 0.8em;
+ color: navy;
+}
+td.hdlist2 {
+ vertical-align: top;
+}
+div.hdlist.compact tr {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+.comment {
+ background: yellow;
+}
+
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+div.colist td {
+ padding-right: 0.5em;
+ padding-bottom: 0.3em;
+ vertical-align: top;
+}
+div.colist td img {
+ margin-top: 0.3em;
+}
+
+@media print {
+ #footer-badges { display: none; }
+}
+
+#toc {
+ margin-bottom: 2.5em;
+}
+
+#toctitle {
+ color: #527bbd;
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 1.0em;
+ margin-bottom: 0.1em;
+}
+
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+div.toclevel2 {
+ margin-left: 2em;
+ font-size: 0.9em;
+}
+div.toclevel3 {
+ margin-left: 4em;
+ font-size: 0.9em;
+}
+div.toclevel4 {
+ margin-left: 6em;
+ font-size: 0.9em;
+}
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+ border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
+}
+
+
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+thead, p.tableblock.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.tableblock {
+ margin-top: 0;
+}
+table.tableblock {
+ border-width: 3px;
+ border-spacing: 0px;
+ border-style: solid;
+ border-color: #527bbd;
+ border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+ border-width: 1px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #527bbd;
+}
+
+table.tableblock.frame-topbot {
+ border-left-style: hidden;
+ border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+ border-top-style: hidden;
+ border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+ border-style: hidden;
+}
+
+th.tableblock.halign-left, td.tableblock.halign-left {
+ text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+ text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
+ text-align: right;
+}
+
+th.tableblock.valign-top, td.tableblock.valign-top {
+ vertical-align: top;
+}
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+ vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+ vertical-align: bottom;
+}
+
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+body.manpage h2 {
+ border-style: none;
+}
+body.manpage div.sectionbody {
+ margin-left: 3em;
+}
+
+@media print {
+ body.manpage div#toc { display: none; }
+}
+
+
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+var asciidoc = { // Namespace.
+
+/////////////////////////////////////////////////////////////////////
+// Table Of Contents generator
+/////////////////////////////////////////////////////////////////////
+
+/* Author: Mihai Bazon, September 2002
+ * http://students.infoiasi.ro/~mishoo
+ *
+ * Table Of Content generator
+ * Version: 0.4
+ *
+ * Feel free to use this script under the terms of the GNU General Public
+ * License, as long as you do not remove or alter this notice.
+ */
+
+ /* modified by Troy D. Hanson, September 2006. License: GPL */
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */
+
+// toclevels = 1..4.
+toc: function (toclevels) {
+
+ function getText(el) {
+ var text = "";
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
+ text += i.data;
+ else if (i.firstChild != null)
+ text += getText(i);
+ }
+ return text;
+ }
+
+ function TocEntry(el, text, toclevel) {
+ this.element = el;
+ this.text = text;
+ this.toclevel = toclevel;
+ }
+
+ function tocEntries(el, toclevels) {
+ var result = new Array;
+ var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
+ // Function that scans the DOM tree for header elements (the DOM2
+ // nodeIterator API would be a better technique but not supported by all
+ // browsers).
+ var iterate = function (el) {
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
+ var mo = re.exec(i.tagName);
+ if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
+ result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
+ }
+ iterate(i);
+ }
+ }
+ }
+ iterate(el);
+ return result;
+ }
+
+ var toc = document.getElementById("toc");
+ if (!toc) {
+ return;
+ }
+
+ // Delete existing TOC entries in case we're reloading the TOC.
+ var tocEntriesToRemove = [];
+ var i;
+ for (i = 0; i < toc.childNodes.length; i++) {
+ var entry = toc.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div'
+ && entry.getAttribute("class")
+ && entry.getAttribute("class").match(/^toclevel/))
+ tocEntriesToRemove.push(entry);
+ }
+ for (i = 0; i < tocEntriesToRemove.length; i++) {
+ toc.removeChild(tocEntriesToRemove[i]);
+ }
+
+ // Rebuild TOC entries.
+ var entries = tocEntries(document.getElementById("content"), toclevels);
+ for (var i = 0; i < entries.length; ++i) {
+ var entry = entries[i];
+ if (entry.element.id == "")
+ entry.element.id = "_toc_" + i;
+ var a = document.createElement("a");
+ a.href = "#" + entry.element.id;
+ a.appendChild(document.createTextNode(entry.text));
+ var div = document.createElement("div");
+ div.appendChild(a);
+ div.className = "toclevel" + entry.toclevel;
+ toc.appendChild(div);
+ }
+ if (entries.length == 0)
+ toc.parentNode.removeChild(toc);
+},
+
+
+/////////////////////////////////////////////////////////////////////
+// Footnotes generator
+/////////////////////////////////////////////////////////////////////
+
+/* Based on footnote generation code from:
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
+ */
+
+footnotes: function () {
+ // Delete existing footnote entries in case we're reloading the footnodes.
+ var i;
+ var noteholder = document.getElementById("footnotes");
+ if (!noteholder) {
+ return;
+ }
+ var entriesToRemove = [];
+ for (i = 0; i < noteholder.childNodes.length; i++) {
+ var entry = noteholder.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
+ entriesToRemove.push(entry);
+ }
+ for (i = 0; i < entriesToRemove.length; i++) {
+ noteholder.removeChild(entriesToRemove[i]);
+ }
+
+ // Rebuild footnote entries.
+ var cont = document.getElementById("content");
+ var spans = cont.getElementsByTagName("span");
+ var refs = {};
+ var n = 0;
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnote") {
+ n++;
+ var note = spans[i].getAttribute("data-note");
+ if (!note) {
+ // Use [\s\S] in place of . so multi-line matches work.
+ // Because JavaScript has no s (dotall) regex flag.
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
+ spans[i].innerHTML =
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ spans[i].setAttribute("data-note", note);
+ }
+ noteholder.innerHTML +=
+ "<div class='footnote' id='_footnote_" + n + "'>" +
+ "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
+ n + "</a>. " + note + "</div>";
+ var id =spans[i].getAttribute("id");
+ if (id != null) refs["#"+id] = n;
+ }
+ }
+ if (n == 0)
+ noteholder.parentNode.removeChild(noteholder);
+ else {
+ // Process footnoterefs.
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnoteref") {
+ var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
+ href = href.match(/#.*/)[0]; // Because IE return full URL.
+ n = refs[href];
+ spans[i].innerHTML =
+ "[<a href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ }
+ }
+ }
+},
+
+install: function(toclevels) {
+ var timerId;
+
+ function reinstall() {
+ asciidoc.footnotes();
+ if (toclevels) {
+ asciidoc.toc(toclevels);
+ }
+ }
+
+ function reinstallAndRemoveTimer() {
+ clearInterval(timerId);
+ reinstall();
+ }
+
+ timerId = setInterval(reinstall, 500);
+ if (document.addEventListener)
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
+ else
+ window.onload = reinstallAndRemoveTimer;
+}
+
+}
+asciidoc.install();
+/*]]>*/
+</script>
+</head>
+<body class="article">
+<div id="header">
+<h1>Device Control Block 4.0 Specification</h1>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_purpose">Purpose</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Device Control Blocks (DCBs) are static tables used to describe the
+board topology and connections external to the GPU chip.</p></div>
+<div class="paragraph"><p>Each board built has specific additions to the capabilities through
+external devices, as well as limitations where output lines are not
+linked to device connectors. DCBs define the devices connected,
+specific information needed to configure those devices, and the external
+electrical connections such as HDMI and Display Port.</p></div>
+<div class="paragraph"><p>DCBs do not try to explain the capabilities of the chip itself. That
+information is implicit in the VBIOS, firmware and drivers, which are
+built differently for each chip. Both the firmware and the drivers
+know the inherent capability of each chip, and use runtime choices to
+determine chip dependent code paths.</p></div>
+<div class="ulist"><div class="title">DCB version and use</div><ul>
+<li>
+<p>
+DCB 1.x is used with Core3 VBIOS (NV5, NV10, NV11, NV15, NV20).
+</p>
+</li>
+<li>
+<p>
+DCB 2.x (2.0-2.4) is used with Core4 and Core4r2 VBIOS (NV17, NV25, NV28, NV3x).
+</p>
+</li>
+<li>
+<p>
+DCB 3.0 is used with Core5 VBIOS (NV4x, G7x).
+</p>
+</li>
+<li>
+<p>
+DCB 4.0 is used with Core6, Core7, and Core8 VBIOS (G80+).
+</p>
+</li>
+</ul></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_device_control_block_structure">Device Control Block Structure</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The 4.0 DCB Data Structure consists of the following parts:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Header - The version number (0x40 for Version 4.0), the header size, the size of each DCB Entry (currently 8 bytes), the number of valid DCB Entries, pointers to different tables, and the DCB signature. If any of the pointers here are NULL, then those tables are considered to be absent or invalid.
+</p>
+</li>
+<li>
+<p>
+Device entries list - One for each display connector (two for DVI-I
+connectors). Each device entry is subdivided into two main parts:
+<a href="#_display_path_information">Display Path Information</a> and
+<a href="#_device_specific_information">Device Specific Information</a>.
+</p>
+</li>
+</ul></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_device_control_block_header">Device Control Block Header</h2>
+<div class="sectionbody">
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<caption class="title">Table 1. Device Control Block Header</caption>
+<col width="27%" />
+<col width="2%" />
+<col width="2%" />
+<col width="66%" />
+<thead>
+<tr>
+<th align="left" valign="top"> Name </th>
+<th align="right" valign="top"> Bit width </th>
+<th align="center" valign="top"> Optional/Mandatory </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">Version</p></td>
+<td align="right" valign="top"><p class="table">8</p></td>
+<td align="center" valign="top"><p class="table">O</p></td>
+<td align="left" valign="top"><p class="table">Version # of the DCB Header and Entries. DCB 4.0 will start with a
+value of 0x40 here. A version number of zero directs the driver to use
+an internal DCB table.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Header Size</p></td>
+<td align="right" valign="top"><p class="table">8</p></td>
+<td align="center" valign="top"><p class="table">M</p></td>
+<td align="left" valign="top"><p class="table">Size of the DCB Header in Bytes. For v4.0 this will be 27 bytes.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Entry Count</p></td>
+<td align="right" valign="top"><p class="table">8</p></td>
+<td align="center" valign="top"><p class="table">M</p></td>
+<td align="left" valign="top"><p class="table">Number of <a href="#_dcb_device_entries">DCB Device Entries</a> immediately
+following this table.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Entry Size</p></td>
+<td align="right" valign="top"><p class="table">8</p></td>
+<td align="center" valign="top"><p class="table">M</p></td>
+<td align="left" valign="top"><p class="table">Size of Each Entry in bytes. With the start of DCB 4.0, this field should be 8.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Communications Control Block Pointer</p></td>
+<td align="right" valign="top"><p class="table">16</p></td>
+<td align="center" valign="top"><p class="table">M</p></td>
+<td align="left" valign="top"><p class="table">Pointer to the <a href="#_communications_control_block">Communications Control Block</a>. In v3.0 this was the I2C Control Block Pointer.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">DCB Signature</p></td>
+<td align="right" valign="top"><p class="table">32</p></td>
+<td align="center" valign="top"><p class="table">M</p></td>
+<td align="left" valign="top"><p class="table">DCB signature = 0x4EDCBDCB.
+This is used to tell a valid DCB from an invalid one.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">GPIO Assignment Table Pointer</p></td>
+<td align="right" valign="top"><p class="table">16</p></td>
+<td align="center" valign="top"><p class="table">M</p></td>
+<td align="left" valign="top"><p class="table">Pointer to the <a href="#_gpio_assignment_table">GPIO Assignment Table</a>.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Input Devices Table Pointer</p></td>
+<td align="right" valign="top"><p class="table">16</p></td>
+<td align="center" valign="top"><p class="table">O</p></td>
+<td align="left" valign="top"><p class="table">Pointer to the <a href="#_input_devices_table">Input Devices Table</a>.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Personal Cinema Table Pointer</p></td>
+<td align="right" valign="top"><p class="table">16</p></td>
+<td align="center" valign="top"><p class="table">O</p></td>
+<td align="left" valign="top"><p class="table">Pointer to the <a href="#_personal_cinema_table">Personal Cinema Table</a>.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Spread Spectrum Table Pointer</p></td>
+<td align="right" valign="top"><p class="table">16</p></td>
+<td align="center" valign="top"><p class="table">O</p></td>
+<td align="left" valign="top"><p class="table">Pointer to the <a href="#_spread_spectrum_table">Spread Spectrum Table</a>.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">I2C Devices Table Pointer</p></td>
+<td align="right" valign="top"><p class="table">16</p></td>
+<td align="center" valign="top"><p class="table">O</p></td>
+<td align="left" valign="top"><p class="table">Pointer to the <a href="#_i2c_device_table">I2C Devices Table</a>.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Connector Table Pointer</p></td>
+<td align="right" valign="top"><p class="table">16</p></td>
+<td align="center" valign="top"><p class="table">M</p></td>
+<td align="left" valign="top"><p class="table">Pointer to the <a href="#_connector_table">Connector Table</a>.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Flags</p></td>
+<td align="right" valign="top"><p class="table">8</p></td>
+<td align="center" valign="top"><p class="table">M</p></td>
+<td align="left" valign="top"><p class="table">See <a href="#_dcb_flags">DCB Flags</a> below</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">HDTV Translation Table Pointer</p></td>
+<td align="right" valign="top"><p class="table">16</p></td>
+<td align="center" valign="top"><p class="table">O</p></td>
+<td align="left" valign="top"><p class="table">Pointer to the <a href="#_hdtv_translation_table">HDTV Translation Table</a>.
+This structure is optional. If the structure is not needed, then this pointer can be set to 0.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Switched Outputs Table Pointer</p></td>
+<td align="right" valign="top"><p class="table">16</p></td>
+<td align="center" valign="top"><p class="table">O</p></td>
+<td align="left" valign="top"><p class="table">Pointer to the <a href="#_switched_outputs_table">Switched Outputs Table</a>. This structure is optional.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><p>An "optional" table pointer or field may be set to zero to indicate that
+no table is present. If the structure is not needed, then this pointer
+can be set to 0.</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">Throughout this document, a "pointer" means a byte offset relative
+to the start of the VBIOS image.</td>
+</tr></table>
+</div>
+<div class="sect2">
+<h3 id="_dcb_flags">DCB Flags</h3>
+<div class="paragraph"><p>Each bit flag has a different meaning.
+All undefined bits are reserved and must be set to 0.</p></div>
+<div class="ulist"><div class="title">DCB Flag Bits</div><ul>
+<li>
+<p>
+Bit 0 - Boot Display Count:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0 - Only 1 boot display is allowed.
+</p>
+</li>
+<li>
+<p>
+1 - 2 boot displays are allowed.
+</p>
+</li>
+</ul></div>
+</li>
+</ul></div>
+<div class="paragraph"><p>These next 2 bits are all used for VIP connections.</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Bits 5:4 - VIP location. Possible values are:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+00b - No VIP.
+</p>
+</li>
+<li>
+<p>
+01b - VIP is on Pin Set A.
+</p>
+</li>
+<li>
+<p>
+10b - VIP is on Pin Set B.
+</p>
+</li>
+<li>
+<p>
+11b - Reserved
+</p>
+</li>
+</ul></div>
+</li>
+</ul></div>
+<div class="paragraph"><p>These next 2 bits are used for Distributed Rendering (DR) configuration.</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Bit 6 - All capable DR ports: Pin Set A:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+1 - Pin Set A is routed to a SLI Finger.
+</p>
+</li>
+<li>
+<p>
+0 - Pin Set A is not attached.
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+Bit 7 - All capable DR Ports: Pin Set B:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+1 - Pin Set B is routed to a SLI Finger.
+</p>
+</li>
+<li>
+<p>
+0 - Pin Set B is not attached.
+</p>
+</li>
+</ul></div>
+</li>
+</ul></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">A PIOR port cannot be used both as a Distributed Rendering
+connection and as an Output Display at the same time.</td>
+</tr></table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_dcb_header_version_4_0_sizes">DCB Header Version 4.0 Sizes</h3>
+<div class="paragraph"><p>The v4.0 DCB header has added fields over time.</p></div>
+<div class="tableblock">
+<table rules="all"
+width="60%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="16%" />
+<col width="16%" />
+<col width="66%" />
+<thead>
+<tr>
+<th align="center" valign="top"> DATE </th>
+<th align="center" valign="top"> New Size </th>
+<th align="center" valign="top"> Last Inclusive Field</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Start</p></td>
+<td align="center" valign="top"><p class="table">23 Bytes</p></td>
+<td align="center" valign="top"><p class="table">Flags</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">08-02-06</p></td>
+<td align="center" valign="top"><p class="table">25 Bytes</p></td>
+<td align="center" valign="top"><p class="table">DCB 3.0, HDTV Translation Table Pointer</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">11-07-06</p></td>
+<td align="center" valign="top"><p class="table">27 Bytes</p></td>
+<td align="center" valign="top"><p class="table">Switched Outputs Table Pointer</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_dcb_device_entries">DCB Device Entries</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>A DCB device entry is 64 bits wide, two double words. The first 32 bits,
+<a href="#_display_path_information">Display Path Information</a>, contain the
+main routing information. Their format is common to all devices. The second
+32 bits, <a href="#_device_specific_information">Device Specific Information</a>,
+are interpreted based on the Type field from the Display Path Information.</p></div>
+<div class="paragraph"><p>There is one device entry for each output display path. The number of
+DCB entries is listed in the DCB Header.</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">For DVI-I connectors there are two entries: one for the CRT and one for
+the LCD. The two device entries share the same I2C port.</td>
+</tr></table>
+</div>
+<div class="paragraph"><p>Device Entries are listed in order of boot priority. The VBIOS code
+will iterate through the DCB entries and if a device is found, then that
+device will be configured. If not, the VBIOS moves to the next index in the
+DCB. If no device is found, the first CRT on the list should be chosen.</p></div>
+<div class="paragraph"><p>GPUs earlier than G80 have a "mirror mode" feature that enables up to two
+display devices to be enabled by the VBIOS, and controlled through the same VGA
+registers. G80 and later display hardware only supports one display in VGA
+mode, and the VBIOS will only enable one display device.</p></div>
+<div class="paragraph"><p>When Device Entries are listed, it is not allowed to have two entries
+for the same output device.</p></div>
+<div class="sect2">
+<h3 id="_display_path_information">Display Path Information</h3>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="3" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="center" valign="top"><p class="table">VD</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Output Devices</p></td>
+<td align="center" valign="top"><p class="table">BBDR</p></td>
+<td align="center" valign="top"><p class="table">BDR</p></td>
+<td colspan="2" align="center" valign="top"><p class="table">Loc</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Bus</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Connector</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Head</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">EDID Port</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Type</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="21%" />
+<col width="7%" />
+<col width="71%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Type</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Display type.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">EDID</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">EDID Port.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Head</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Head bitmask.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Con</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Connector table entry index.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Bus</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Logical bus, used for mutual exclusion.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Loc</p></td>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Location of the final stage devices, on-chip or off-chip.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">BDR</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Disables this as a boot display if set.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">BBDR</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">If set, disables the ability to boot if not display is detected.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">VD</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Indicates this is a virtual device.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Type</div><p>This field defines the Type of the display used on this display path.
+Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = CRT
+</p>
+</li>
+<li>
+<p>
+1 = TV
+</p>
+</li>
+<li>
+<p>
+2 = TMDS
+</p>
+</li>
+<li>
+<p>
+3 = LVDS
+</p>
+</li>
+<li>
+<p>
+4 = Reserved
+</p>
+</li>
+<li>
+<p>
+5 = SDI
+</p>
+</li>
+<li>
+<p>
+6 = DisplayPort
+</p>
+</li>
+<li>
+<p>
+E = EOL (End of Line) - This signals the SW to stop parsing any more entries.
+</p>
+</li>
+<li>
+<p>
+F = Skip Entry - This allows quick removal of entries from DCB.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">EDID Port</div><p>Each number refers to an entry in the
+<a href="#_communications_control_block">Communications Control Block</a> Structure
+that represents the port to use in order to query the EDID. This number
+cannot be equal to or greater than the Communication Control Block Header&#8217;s
+Entry Count value, except if the EDID is not retrieved via DDC (over I2C
+or DPAux).</p></div>
+<div class="paragraph"><p>For DFPs, if the EDID source is set to straps or SBIOS, then this field
+must be set to 0xF to indicate that we are not using a Communications Control
+Block port for this device to get the EDID.</p></div>
+<div class="paragraph"><div class="title">Head Bitmask</div><p>Each bit defines the ability of that head with this device.</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Bit 0 = Head 0
+</p>
+</li>
+<li>
+<p>
+Bit 1 = Head 1
+</p>
+</li>
+<li>
+<p>
+Bit 2 = Head 2
+</p>
+</li>
+<li>
+<p>
+Bit 3 = Head 3
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>GPUs before GK107 only support two heads. For those devices, bits 2 and
+3 should always be zero.</p></div>
+<div class="paragraph"><div class="title">Connector Index</div><p>This field signifies a specific entry in the Connector Table. More than
+one DCB device can have the same Connector Index. This number cannot
+be equal to or greater than the Connector Table Header&#8217;s Entry Count value.</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">If two DCB entries have the same Connector Index, that still allows them
+to be displayed at the same time. To prevent combinations based on the
+connector, use the Bus field.</td>
+</tr></table>
+</div>
+<div class="paragraph"><div class="title">Bus</div><p>This field only allows for logical mutual exclusion of devices so that
+they cannot display simultaneously. The driver uses this field to disallow the
+use of a combination of two devices if they share the same bus number.</p></div>
+<div class="paragraph"><div class="title">Location</div><p>This field shows the location of the last output device before the data
+is sent off from our board to the display.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = On Chip (internal) TV encoder, internal TMDS encoder
+</p>
+</li>
+<li>
+<p>
+1 = On Board (external) DAC, external TMDS encoder
+</p>
+</li>
+<li>
+<p>
+2 = Reserved.
+</p>
+</li>
+</ul></div>
+<div class="ulist"><div class="title">Boot Device Removed</div><ul>
+<li>
+<p>
+0 = This device is allowed to boot if detected.
+</p>
+</li>
+<li>
+<p>
+1 = This device is not allowed to boot, even if detected.
+</p>
+</li>
+</ul></div>
+<div class="ulist"><div class="title">Blind Boot Device Removed</div><ul>
+<li>
+<p>
+0 = This device is allowed to boot if no devices are detected.
+</p>
+</li>
+<li>
+<p>
+1 = This device is not allowed to boot if no devices are detected.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">DAC/SOR/PIOR Assignment (Output Resource)</div><p>Each bit defines the use of this connector with a DAC for internal CRTs
+and TVs, an SOR for internal DFPs, and a PIOR for external devices like
+TMDS, SDI or TV Encoders.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Bit 0 = DAC 0, SOR 0, or PIOR 0
+</p>
+</li>
+<li>
+<p>
+Bit 1 = DAC 1, SOR 1, or PIOR 1
+</p>
+</li>
+<li>
+<p>
+Bit 2 = DAC 2, SOR 2, or PIOR 2
+</p>
+</li>
+<li>
+<p>
+Bit 3 = DAC 3, SOR 3, or PIOR 3
+</p>
+</li>
+</ul></div>
+<div class="ulist"><div class="title">Virtual Device</div><ul>
+<li>
+<p>
+0 = This is a physical device.
+</p>
+</li>
+<li>
+<p>
+1 = This is a virtual device.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Virtual devices are used only for remote desktop rendering. When set to
+1, EDID Port should be set to 0xF (unused) and the Connector Index
+should reference an entry with Type="Skip Entry".</p></div>
+<div class="paragraph"><div class="title">Extra Information</div><p>The BUS field may reflect only a logical limitation of the buses. It can
+describe an actual physical limitation, or it may be solely a way to
+remove the combination between two DCB entries.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_device_specific_information">Device Specific Information</h3>
+<div class="paragraph"><p>Each device type has a different specific information associated with it.
+However, TMDS, LVDS, SDI, and DisplayPort share the same DFP Specific
+Information.</p></div>
+<div class="sect3">
+<h4 id="_crt_specific_information">CRT Specific Information</h4>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="100%" />
+<thead>
+<tr>
+<th align="left" valign="top"> 31..0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">Reserved (Set to 0)</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_dfp_specific_information">DFP Specific Information</h4>
+<div class="paragraph"><p>DFP Specific Information is used to decribe TMDS, LVDS, SDI and
+DisplayPort Types of devices.</p></div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="12%" />
+<col width="9%" />
+<col width="3%" />
+<col width="6%" />
+<col width="3%" />
+<col width="3%" />
+<col width="25%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<thead>
+<tr>
+<th align="left" valign="top"> 31..28 </th>
+<th align="left" valign="top">27..24</th>
+<th align="left" valign="top">23..21</th>
+<th align="left" valign="top">20</th>
+<th align="left" valign="top">19..18</th>
+<th align="left" valign="top"> 17 </th>
+<th align="left" valign="top"> 16 </th>
+<th align="left" valign="top"> 15..8 </th>
+<th align="left" valign="top">7..6</th>
+<th align="left" valign="top"> 5..4 </th>
+<th align="left" valign="top">3..2</th>
+<th align="left" valign="top">1..0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">MxLM</p></td>
+<td align="left" valign="top"><p class="table">MLR</p></td>
+<td align="left" valign="top"><p class="table">E</p></td>
+<td align="left" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">HDMI</p></td>
+<td align="left" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">Ext Enc</p></td>
+<td align="left" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">SL/DPL</p></td>
+<td align="left" valign="top"><p class="table">Ctrl</p></td>
+<td align="left" valign="top"><p class="table">EDID</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="83%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="center" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">EDID</p></td>
+<td align="center" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">EDID source.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Ctrl</p></td>
+<td align="center" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Power and Backlight Control.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">SL/DPL</p></td>
+<td align="center" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Sub-link/DisplayPort Link.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="center" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Ext Enc</p></td>
+<td align="center" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">External Link Type.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="center" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">HDMI</p></td>
+<td align="center" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">HDMI Enable.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="center" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">E</p></td>
+<td align="center" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">External Communications Port.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">MxLR</p></td>
+<td align="center" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">Maximum Link Rate.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">MxLM</p></td>
+<td align="center" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Maximum Lane Mask.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="center" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">EDID source</div><p>This field states where to get the EDIDs for the panels. Current values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = EDID is read via DDC.
+</p>
+</li>
+<li>
+<p>
+1 = EDID is determined via Panel Straps and VBIOS tables.
+</p>
+</li>
+<li>
+<p>
+2 = EDID is obtained using the _DDC ACPI interface or VBIOS 5F80/02 SBIOS INT15 calls.
+</p>
+</li>
+<li>
+<p>
+3 = Reserved.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Mobile LVDS Detection Policy</div><p>There is a secondary fallback policy that is used for all mobile LVDS panels.
+It follows this convention:</p></div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="41%" />
+<col width="41%" />
+<thead>
+<tr>
+<th align="center" valign="top"> DCB EDID Source </th>
+<th align="left" valign="top"> Panel Strap </th>
+<th align="left" valign="top"> Panel Index </th>
+<th align="left" valign="top"> EDID Retrieval</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td rowspan="2" align="center" valign="middle"><p class="table">DDC</p></td>
+<td align="left" valign="top"><p class="table">== 0xF</p></td>
+<td align="left" valign="top"><p class="table">Don&#8217;t Care.</p></td>
+<td align="left" valign="top"><p class="table">Use DDC.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">!= 0xF</p></td>
+<td align="left" valign="top"><p class="table">Don&#8217;t Care.</p></td>
+<td align="left" valign="top"><p class="table">Use Straps and VBIOS Tables.</p></td>
+</tr>
+<tr>
+<td rowspan="3" align="center" valign="middle"><p class="table">Straps and VBIOS Tables</p></td>
+<td align="left" valign="top"><p class="table">!= 0xF</p></td>
+<td align="left" valign="top"><p class="table">Don&#8217;t Care.</p></td>
+<td align="left" valign="top"><p class="table">Use Straps and VBIOS Tables.</p></td>
+</tr>
+<tr>
+<td rowspan="2" align="center" valign="middle"><p class="table">== 0xF</p></td>
+<td align="left" valign="top"><p class="table">!= 0xF</p></td>
+<td align="left" valign="top"><p class="table">Use Straps and VBIOS Tables.</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">== 0xF</p></td>
+<td align="left" valign="top"><p class="table">No Panel.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">SBIOS</p></td>
+<td align="left" valign="top"><p class="table">Don&#8217;t Care.</p></td>
+<td align="left" valign="top"><p class="table">Don&#8217;t Care.</p></td>
+<td align="left" valign="top"><p class="table">Use SBIOS _DDC ACPI method or SBIOS/VBIOS Call.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><p>If the board designer chooses to use DDC based EDIDs always, the VBIOS can
+override the Panel Strap to always indicate 0xF via SW Strap Overrides or through
+the DevInit scripts.</p></div>
+<div class="paragraph"><div class="title">Power and Backlight Control</div><p>This field describes the control method for the power and backlight of the
+panel. Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = External. This is used to define panels where we don&#8217;t have direct control over the power or backlight. For example, this value is used for most TMDS panels.
+</p>
+</li>
+<li>
+<p>
+1 = Scripts. Used for most LVDS panels.
+</p>
+</li>
+<li>
+<p>
+2 = VBIOS callbacks to the SBIOS.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Sub-link/DisplayPort Link</div><p>This field specifies a board-supported sub-link mask for TMDS, LVDS, and
+SDI. For Display Port, this field specifies the link mask supported
+on the board.</p></div>
+<div class="paragraph"><p>For TMDS, LVDS, and SDI, this field lists which sub-links in each SOR are
+routed to the connector on the board.</p></div>
+<div class="paragraph"><p>Possible sub-link values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Bit 0: Sub-link A
+</p>
+</li>
+<li>
+<p>
+Bit 1: Sub-link B
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>If both sub-links are routed to the connector, specifying a dual-link
+connector, then bits 0 and 1 will both be set.</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">Dual-link hook-up does not necessarily mean that both links should
+be used during programming. According to the DVI 1.0 specification,
+the crossover frequency of 165 MHZ should be the deciding factor for when
+dual-link vs. single-link connections should be used for TMDS use. This field
+merely indicates whether the connector has two links connected to it. It
+does not specify the actual use of either single-link or dual-link connections.</td>
+</tr></table>
+</div>
+<div class="paragraph"><p>LVDS uses single-link or dual-link connections based on the individual panel
+model&#8217;s requirements. For example, SXGA panels may be run with single-link or
+dual-link LVDS connections.</p></div>
+<div class="paragraph"><p>For DisplayPort, this field describes which links in each SOR are routed to the
+connector on the board. Possible link values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Bit 0: DP-A (Display Port Resource A)
+</p>
+</li>
+<li>
+<p>
+Bit 1: DP-B (Display Port Resource B)
+</p>
+</li>
+</ul></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">Unlike TMDS, LVDS, and SDI, if both links are routed to the
+connector, this does not indicate the presence of a dual-link connector. It
+simply means that both Display Port (DP) resources A and B may be used
+with this SOR. That is: DP-A or DP-B may be associated with an output device
+(OD) to output via DisplayPort, but not both simultaneously.</td>
+</tr></table>
+</div>
+<div class="paragraph"><div class="title">Reserved</div><p>Set to 0.</p></div>
+<div class="paragraph"><div class="title">External Link Type</div><p>This field describes the exact external link used on the board. If this
+Location field in the Display Path of this DCB entry is set to ON CHIP,
+then these bits should be set to 0.</p></div>
+<div class="paragraph"><p>Currently defined values:</p></div>
+<div class="paragraph"><div class="title">HDMI Enable</div><p>This bit is placed here to allow the use of HDMI on this particular DFP
+output display.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Disable HDMI on this DFP
+</p>
+</li>
+<li>
+<p>
+1 = Enable HDMI on this DFP
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">External Communications Port</div><p>If this device uses external I2C or DPAux communication, then this field
+allows us to know which port is to be used. If the device is internal
+to the chip, set this bit to 0 by default.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Primary Communications Port
+</p>
+</li>
+<li>
+<p>
+1 = Secondary Communications Port
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>The
+<a href="#_communications_control_block_header">Communications Control Block Header</a>
+holds the primary and secondary port indices. Each index maps to an entry in
+the <a href="#_communications_control_block">Communications control Block</a> table,
+which specifies the physical port and type to use to communicate with this
+device.</p></div>
+<div class="paragraph"><div class="title">Maximum Link Rate</div><p>This field describes the maximum link rate allowed for the links within
+the Display Port connection. This field is only applicable to DisplayPort
+device types.</p></div>
+<div class="paragraph"><p>Possible values are:</p></div>
+<div class="tableblock">
+<table rules="all"
+width="20%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="4%" />
+<col width="95%" />
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">1.62 Gbps</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">2.7 Gbps</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">5.4 Gbps</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Maximum Lane Mask</div><p>This field describes the maximum lanes that are populated on the board. This
+field is only applicable to DisplayPort device types.</p></div>
+<div class="paragraph"><p>Possible values are:</p></div>
+<div class="tableblock">
+<table rules="all"
+width="20%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="4%" />
+<col width="95%" />
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">0x1</p></td>
+<td align="left" valign="top"><p class="table">1 Lane</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">0x3</p></td>
+<td align="left" valign="top"><p class="table">2 Lanes</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">0xF</p></td>
+<td align="left" valign="top"><p class="table">4 Lanes</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<caption class="title">Table 2. External Link Type</caption>
+<col width="2%" />
+<col width="48%" />
+<col width="48%" />
+<thead>
+<tr>
+<th align="left" valign="top"> Value </th>
+<th align="left" valign="top"> Name </th>
+<th align="left" valign="top"> I2C Addr</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">Undefined (allows backward compatibility) - Assumes Single-Link.</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Silicon Image 164 - Single-Link TMDS.</p></td>
+<td align="left" valign="top"><p class="table">0x70</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Silicon Image 178 - Single-Link TMDS.</p></td>
+<td align="left" valign="top"><p class="table">0x70</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">Dual Silicon Image 178 - Dual-Link TMDS.</p></td>
+<td align="left" valign="top"><p class="table">0x70 (primary), 0x72 (secondary)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Chrontel 7009 - Single-Link TMDS.</p></td>
+<td align="left" valign="top"><p class="table">0xEA</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">5</p></td>
+<td align="left" valign="top"><p class="table">Chrontel 7019 - Dual-Link LVDS.</p></td>
+<td align="left" valign="top"><p class="table">0xEA</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">6</p></td>
+<td align="left" valign="top"><p class="table">National Semiconductor DS90C387 - Dual Link LVDS.</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">7</p></td>
+<td align="left" valign="top"><p class="table">Silicon Image 164 - Single-Link TMDS (Alternate Address).</p></td>
+<td align="left" valign="top"><p class="table">0x74</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Chrontel 7301 - Single-Link TMDS.</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">9</p></td>
+<td align="left" valign="top"><p class="table">Silicon Image 1162 - Single Link TMDS (Alternate Address).</p></td>
+<td align="left" valign="top"><p class="table">0x72</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">A</p></td>
+<td align="left" valign="top"><p class="table">Reserved</p></td>
+<td align="left" valign="top"><p class="table">Reserved</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">B</p></td>
+<td align="left" valign="top"><p class="table">Analogix ANX9801 - 4-Lane DisplayPort.</p></td>
+<td align="left" valign="top"><p class="table">0x70 (transmitter), 0x72 (receiver)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">C</p></td>
+<td align="left" valign="top"><p class="table">Parade Tech DP501 - 4-Lane DisplayPort.</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">D</p></td>
+<td align="left" valign="top"><p class="table">Analogix ANX9805 - HDMI and DisplayPort.</p></td>
+<td align="left" valign="top"><p class="table">0x70, 0x72, 0x7A, 0x74</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">E</p></td>
+<td align="left" valign="top"><p class="table">Analogix ANX9805 - HDMI and DisplayPort (Alternate Address).</p></td>
+<td align="left" valign="top"><p class="table">0x78, 0x76, 0x7E, 0x7C</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_tv_specific_information">TV Specific Information</h4>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="25%" />
+<col width="12%" />
+<col width="12%" />
+<col width="25%" />
+<col width="12%" />
+<col width="12%" />
+<thead>
+<tr>
+<th align="left" valign="top"> 31..24 </th>
+<th align="left" valign="top"> 23..20 </th>
+<th align="left" valign="top"> 19..16 </th>
+<th align="left" valign="top"> 15..8 </th>
+<th align="left" valign="top"> 7..4 </th>
+<th align="left" valign="top"> 3..0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">HDTV</p></td>
+<td align="left" valign="top"><p class="table">CC</p></td>
+<td align="left" valign="top"><p class="table">E</p></td>
+<td align="left" valign="top"><p class="table">DACS+</p></td>
+<td align="left" valign="top"><p class="table">Encoder</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="21%" />
+<col width="7%" />
+<col width="71%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">SDTV</p></td>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">SDTV Format.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">DACs</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">DAC description, lower four bits.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Encoder</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Encoder identifier.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">TVDACs+</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">DAC description, upper four bits.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">E</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">External Communication Port.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">CC</p></td>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Connector Count.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">HDTV</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">HDTV Format.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">5</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">SDTV Format</div><p>This field determines the default SDTV Format.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x0 = NTSC_M (US)
+</p>
+</li>
+<li>
+<p>
+0x1 = NTSC_J (Japan)
+</p>
+</li>
+<li>
+<p>
+0x2 = PAL_M (NTSC Timing w/PAL Encoding - Brazilian Format)
+</p>
+</li>
+<li>
+<p>
+0x3 = PAL_BDGHI (US)
+</p>
+</li>
+<li>
+<p>
+0x4 = PAL_N (Paraguay and Uruguay Format)
+</p>
+</li>
+<li>
+<p>
+0x5 = PAL_NC (Argentina Format)
+</p>
+</li>
+<li>
+<p>
+0x6 = Reserved
+</p>
+</li>
+<li>
+<p>
+0x7 = Reserved
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">DACs</div><p>These bits define the availability of encoder outputs that the board
+supports to the TV connectors.</p></div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="9%" />
+<col width="90%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Value </th>
+<th align="left" valign="top"> Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">0x00</p></td>
+<td align="left" valign="top"><p class="table">Reserved.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x01</p></td>
+<td align="left" valign="top"><p class="table">Invalid.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x02</p></td>
+<td align="left" valign="top"><p class="table">CVBS on Green.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x03</p></td>
+<td align="left" valign="top"><p class="table">CVBS on Green and S-Video on Red (chroma) and Green (luma).</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x04</p></td>
+<td align="left" valign="top"><p class="table">CVBS on Blue.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x05</p></td>
+<td align="left" valign="top"><p class="table">Invalid.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x06</p></td>
+<td align="left" valign="top"><p class="table">Invalid.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x07</p></td>
+<td align="left" valign="top"><p class="table">CVBS on Blue, S-Video on Red (chroma) and Green (luma).</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x08</p></td>
+<td align="left" valign="top"><p class="table">Standard HDTV.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x09</p></td>
+<td align="left" valign="top"><p class="table">HDTV Twist 1.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x0A</p></td>
+<td align="left" valign="top"><p class="table">SCART.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x0B</p></td>
+<td align="left" valign="top"><p class="table">Twist 2.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x0C</p></td>
+<td align="left" valign="top"><p class="table">SCART + HDTV.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x0D</p></td>
+<td align="left" valign="top"><p class="table">Standard HDTV without SDTV.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x0E</p></td>
+<td align="left" valign="top"><p class="table">SCART Twist 1.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x0F</p></td>
+<td align="left" valign="top"><p class="table">SCART + HDTV.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x11</p></td>
+<td align="left" valign="top"><p class="table">Composite + HDTV outputs.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x12</p></td>
+<td align="left" valign="top"><p class="table">HDTV + Scart Twist 1.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x13</p></td>
+<td align="left" valign="top"><p class="table">S-Video on Red (chroma) and Green (luma).</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Encoder</div><p>This field describes the exact encoder used on the board.</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Brooktree/Conexant
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x00 = Brooktree 868
+</p>
+</li>
+<li>
+<p>
+0x01 = Brooktree 869
+</p>
+</li>
+<li>
+<p>
+0x02 = Conexant 870
+</p>
+</li>
+<li>
+<p>
+0x03 = Conexant 871
+</p>
+</li>
+<li>
+<p>
+0x04 = Conexant 872
+</p>
+</li>
+<li>
+<p>
+0x05 = Conexant 873
+</p>
+</li>
+<li>
+<p>
+0x06 = Conexant 874
+</p>
+</li>
+<li>
+<p>
+0x07 = Conexant 875
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+Chrontel
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x40 = Chrontel 7003
+</p>
+</li>
+<li>
+<p>
+0x41 = Chrontel 7004
+</p>
+</li>
+<li>
+<p>
+0x42 = Chrontel 7005
+</p>
+</li>
+<li>
+<p>
+0x43 = Chrontel 7006
+</p>
+</li>
+<li>
+<p>
+0x44 = Chrontel 7007
+</p>
+</li>
+<li>
+<p>
+0x45 = Chrontel 7008
+</p>
+</li>
+<li>
+<p>
+0x46 = Chrontel 7009
+</p>
+</li>
+<li>
+<p>
+0x47 = Chrontel 7010
+</p>
+</li>
+<li>
+<p>
+0x48 = Chrontel 7011
+</p>
+</li>
+<li>
+<p>
+0x49 = Chrontel 7012
+</p>
+</li>
+<li>
+<p>
+0x4A = Chrontel 7019
+</p>
+</li>
+<li>
+<p>
+0x4B = Chrontel 7021
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+Philips
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x80 = Philips 7102
+</p>
+</li>
+<li>
+<p>
+0x81 = Philips 7103
+</p>
+</li>
+<li>
+<p>
+0x82 = Philips 7104
+</p>
+</li>
+<li>
+<p>
+0x83 = Philips 7105
+</p>
+</li>
+<li>
+<p>
+0x84 = Philips 7108
+</p>
+</li>
+<li>
+<p>
+0x85 = Philips 7108A
+</p>
+</li>
+<li>
+<p>
+0x86 = Philips 7108B
+</p>
+</li>
+<li>
+<p>
+0x87 = Philips 7109
+</p>
+</li>
+<li>
+<p>
+0x88 = Philips 7109A
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+NVIDIA
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0xC0 = NVIDIA internal encoder
+</p>
+</li>
+</ul></div>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">TVDACs+</div><p>This field shows bits 4-7 of the TVDACs value.</p></div>
+<div class="paragraph"><div class="title">External Communication Port</div><p>If this device uses external I2C communication, then this field allows
+us to know which device will be used. If the device is internal to the
+chip, set this bit to 0 as default.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Primary Communications Port
+</p>
+</li>
+<li>
+<p>
+1 = Secondary Communications Port
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>The I2C Control Block Header holds the primary and secondary port indices.</p></div>
+<div class="paragraph"><div class="title">Connector Count</div><p>Generally, there is only 1 connector per DCB display path. TVs are
+special since one output device could have multiple connectors.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = 1 Connector
+</p>
+</li>
+<li>
+<p>
+1 = 2 Connectors
+</p>
+</li>
+<li>
+<p>
+2 = 3 Connectors
+</p>
+</li>
+<li>
+<p>
+3 = 4 Connectors
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>If only one bit of either of the Red, Green or Blue defines in the above
+DACs field is set, then this field must be set to 1 connector.</p></div>
+<div class="paragraph"><p>If two bits of either of the Red, Green or Blue defines in the above
+DACs field is set, then this field must be set to 1 or 2 connectors for
+a S-Video and/or Composite connector. But those connectors cannot be
+displayed simultaneously.</p></div>
+<div class="paragraph"><p>If three bits of either of the Red, Green or Blue defines in the above
+DACs field is set, then this field must be set to 2 connectors for both
+a S-Video and Composite connector.</p></div>
+<div class="paragraph"><p>If the HDTV Bit is set, then we can assume that there will be connectors
+for YPrPb, S-Video, and Composite off of the <a href="#_personal_cinema_table">Personal Cinema</a> pod. So, this field should be set to 3 connectors.</p></div>
+<div class="paragraph"><div class="title">HDTV Format</div><p>This field determines the default HDTV Format.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x0 = HDTV 576i
+</p>
+</li>
+<li>
+<p>
+0x1 = HDTV 480i
+</p>
+</li>
+<li>
+<p>
+0x2 = HDTV 480p @60Hz
+</p>
+</li>
+<li>
+<p>
+0x3 = HDTV 576p @50Hz
+</p>
+</li>
+<li>
+<p>
+0x4 = HDTV 720p @50Hz
+</p>
+</li>
+<li>
+<p>
+0x5 = HDTV 720p @60Hz
+</p>
+</li>
+<li>
+<p>
+0x6 = HDTV 1080i @50Hz
+</p>
+</li>
+<li>
+<p>
+0x7 = HDTV 1080i @60Hz
+</p>
+</li>
+<li>
+<p>
+0x8 = HDTV 1080p @24Hz
+</p>
+</li>
+<li>
+<p>
+0x9-0xE = Reserved
+</p>
+</li>
+<li>
+<p>
+0xF = Reserved
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">SDTV Format</div><p>This field determines the default SDTV Format.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x0 = NTSC_M (US)
+</p>
+</li>
+<li>
+<p>
+0x1 = NTSC_J (Japan)
+</p>
+</li>
+<li>
+<p>
+0x2 = PAL_M (NTSC Timing w/PAL Encoding - Brazilian Format)
+</p>
+</li>
+<li>
+<p>
+0x3 = PAL_BDGHI (US)
+</p>
+</li>
+<li>
+<p>
+0x4 = PAL_N (Paraguay and Uruguay Format)
+</p>
+</li>
+<li>
+<p>
+0x5 = PAL_NC (Argentina Format)
+</p>
+</li>
+<li>
+<p>
+0x6 = Reserved
+</p>
+</li>
+<li>
+<p>
+0x7 = Reserved
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Extra Information</div><p>The TV sub-DACs are labeled 0, 1, 2, and 3 for G80 and later GPUs. There is
+no plan currently to support external TV encoders. When the CRT is used,
+sub-DAC 0 is used for Red, sub-DAC 1 is used for Green and sub-DAC 2 is used
+for Blue, always.</p></div>
+<div class="paragraph"><p>This table should explain how each TVDACs value corresponds to each sub-DAC
+TV Protocol:</p></div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<col width="5%" />
+<thead>
+<tr>
+<th align="center" valign="top">TVDACs </th>
+<th colspan="4" align="center" valign="top">Composite </th>
+<th colspan="4" align="center" valign="top"> S-Video </th>
+<th colspan="4" align="center" valign="top"> HDTV </th>
+<th colspan="4" align="center" valign="top"> SCART</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">0</p></td>
+<td align="center" valign="top"><p class="table">1</p></td>
+<td align="center" valign="top"><p class="table">2</p></td>
+<td align="center" valign="top"><p class="table">3</p></td>
+<td align="center" valign="top"><p class="table">0</p></td>
+<td align="center" valign="top"><p class="table">1</p></td>
+<td align="center" valign="top"><p class="table">2</p></td>
+<td align="center" valign="top"><p class="table">3</p></td>
+<td align="center" valign="top"><p class="table">0</p></td>
+<td align="center" valign="top"><p class="table">1</p></td>
+<td align="center" valign="top"><p class="table">2</p></td>
+<td align="center" valign="top"><p class="table">3</p></td>
+<td align="center" valign="top"><p class="table">0</p></td>
+<td align="center" valign="top"><p class="table">1</p></td>
+<td align="center" valign="top"><p class="table">2</p></td>
+<td align="center" valign="top"><p class="table">3</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0</p></td>
+<td colspan="16" align="center" valign="top"><p class="table">Invalid</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">1</p></td>
+<td colspan="16" align="center" valign="top"><p class="table">Invalid</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table"><span class="red">2</span></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table"><span class="red">3</span></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">4</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">5</p></td>
+<td colspan="16" align="center" valign="top"><p class="table">Invalid</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">6</p></td>
+<td colspan="16" align="center" valign="top"><p class="table">Invalid</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table"><span class="red">7</span></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table"><span class="red">8</span></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">R/Pr</p></td>
+<td align="center" valign="top"><p class="table">G/Y</p></td>
+<td align="center" valign="top"><p class="table">B/Pb</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">9</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">R/Pr</p></td>
+<td align="center" valign="top"><p class="table">G/Y</p></td>
+<td align="center" valign="top"><p class="table">B/Pb</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">A</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">G</p></td>
+<td align="center" valign="top"><p class="table">B</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">B</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">R/Pr</p></td>
+<td align="center" valign="top"><p class="table">G/Y</p></td>
+<td align="center" valign="top"><p class="table">B/Pb</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">G/Y</p></td>
+<td align="center" valign="top"><p class="table">B/Pb</p></td>
+<td align="center" valign="top"><p class="table">R/Pr</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">G</p></td>
+<td align="center" valign="top"><p class="table">B</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table"><span class="red">D</span></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">R/Pr</p></td>
+<td align="center" valign="top"><p class="table">G/Y</p></td>
+<td align="center" valign="top"><p class="table">B/Pb</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">E</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">G</p></td>
+<td align="center" valign="top"><p class="table">B</p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">F</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">G/Y</p></td>
+<td align="center" valign="top"><p class="table">R/Pr</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">B/Pb</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">G</p></td>
+<td align="center" valign="top"><p class="table">B</p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x10</p></td>
+<td colspan="16" align="center" valign="top"><p class="table">Reserved</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">0x11</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">R/Pr</p></td>
+<td align="center" valign="top"><p class="table">G/Y</p></td>
+<td align="center" valign="top"><p class="table">B/Pb</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table"><span class="red">0x12</span></p></td>
+<td align="center" valign="top"><p class="table">CVBS<sup>1</sup></p></td>
+<td align="center" valign="top"><p class="table">CVBS<sup>2</sup></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">G/Y</p></td>
+<td align="center" valign="top"><p class="table">B/Pb</p></td>
+<td align="center" valign="top"><p class="table">R/Pr</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">CVBS</p></td>
+<td align="center" valign="top"><p class="table">G</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">B</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table"><span class="red">0x13</span></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table">Y</p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+<td align="center" valign="top"><p class="table"></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><p><span class="red">Only the entries above in red are currently supported in Core6+.</span></p></div>
+<div class="paragraph"><p>Here&#8217;s how we choose the connector types based on the load:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+The SCART configuration is chosen if SCART is valid for the board&#8217;s TVDACs
+setting, and loads are detected on all four sub-DACS.
+</p>
+</li>
+<li>
+<p>
+The HDTV configuration is chosen if HDTV is valid for the board&#8217;s TVDACs
+setting, SCART was not chosen, and loads are detected on the three
+sub-DACS that are specified to carry signals for the HDTV configuration.
+</p>
+</li>
+<li>
+<p>
+The S-Video configuration is chosen if S-Video is valid for the board&#8217;s TVDACs
+setting, SCART or HTDV were not chosen, and loads are detected on the two
+sub-DACS that are specified to carry signals for the S-Video configuration.
+</p>
+</li>
+<li>
+<p>
+The Composite configuration is chosen if Composite is valid for the board&#8217;s
+TVDACs setting while SCART, HTDV, or S-Video were not chosen.
+</p>
+</li>
+<li>
+<p>
+Some configurations allow for two different Composite/CVBS signals.
+CVBS1 is used if that DAC has a load. Otherwise, we use CVBS2. CVBS1 is the
+CVBS signal when the 4-pin S-Video to CVBS dongle is used. CVBS2 is the
+CVBS signal when the 7-pin HDTV component dongle is used (the B/Pb connector on
+the HDTV component RCA connectors on the 7-pin dongle is labeled as "Comp" for
+use with CVBS).
+</p>
+</li>
+</ul></div>
+<div class="ulist"><div class="title">Additional Notes</div><ul>
+<li>
+<p>
+The S-Video Y signal will always follow the G/Y signal on the 7-pin HDTV component dongle (because the pins match up on the connectors).
+</p>
+</li>
+<li>
+<p>
+The S-Video C signal will always follow the R/Pr signal on the 7-pin HDTV component dongle (because the pins match up on the connectors).
+</p>
+</li>
+<li>
+<p>
+The CVBS (Composite) signal will always follow the B/Pb signal on the 7-pin HDTV component dongle (because the B/Pb connector is labeled for use as Composite (CVBS)).
+</p>
+</li>
+<li>
+<p>
+The CVBS (Composite) signal will always follow the Y signal on the 4-pin S-Video to CVBS dongle (because the dongle has the RCA CVBS signal wired that way).
+</p>
+</li>
+</ul></div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_communications_control_block">Communications Control Block</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>This structure is REQUIRED in the DCB 4.0 spec. It must be listed inside
+every DCB. The VBIOS and the FCODE will use the data from this
+structure.</p></div>
+<div class="paragraph"><p>The Communications Control Block provides logical to physical
+translation of all the different ways that the GPU can use to
+communicate with other devices on the board or to displays. Prior to
+DCB 4.0 there were 3 different I2C Ports for GPUs and an
+extra 2 for Crush (nForce chipset) 11/17. The Northbridge, which holds the integrated
+GPU, only has 1.5 V signaling, but the DDC/EDID spec requires 3.3 V
+signaling. So, for Crush, we use two ports on the south bridge to handle
+the DDC voltage requirements.</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">Crush, also known as nForce or nForce2, is a motherboard chipset created by NVIDIA.
+Crush was released in mid-2001.</td>
+</tr></table>
+</div>
+<div class="paragraph"><p>For DCB 4.0, the norm will be 4 I2C ports as exposed on G80. With
+Display Port added in G98, we&#8217;ll expose DPAUX ports as well.</p></div>
+<div class="sect2">
+<h3 id="_communications_control_block_header">Communications Control Block Header</h3>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="21%" />
+<col width="7%" />
+<col width="71%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Version</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Version # of the CCB Header and Entries. CCB 4.0 will start with a value of 0x40 here. A version of 0 here is invalid.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Header Size</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Size of the CCB Header in bytes. This is typically 5 bytes.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Entry Count</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Number of CCB Entries starting directly after the end of this table.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Entry Size</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Size of each entry in bytes. This field should be 4.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Primary Communication Port</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Index for the primary communications port. Specifically, if we need to talk with an external device, the port referenced by this index will be the primary port to talk with that device.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Secondary Communication Port</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Index for the secondary communications port. Specifically, if we need to talk with an external device, this port referenced by this index will be the secondary port to talk with that device.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><p>There is one port entry for each port used. A DVI-I connector&#8217;s two device entries share the same I2C port.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_communications_control_block_entry">Communications Control Block Entry</h3>
+<div class="paragraph"><div class="title">Access Method</div><p>The first upper 8 bits of each entry is called the Access Method. This
+field indicates how the software should control each port. From NV50 onward
+a new port mapping was implemented. Older I2C Access methods - CRTC
+indexed mapping and PCI IO Mapping - have been removed, but their values
+reserved to allow SW compatibility. Here&#8217;s the NV50 and later Defined Access
+Methods:</p></div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="7%" />
+<col width="92%" />
+<thead>
+<tr>
+<th align="left" valign="top"> Value </th>
+<th align="left" valign="top"> Method</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">Reserved (Prior DCB Usage)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved (Prior DCB Usage)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Reserved (Prior DCB Usage)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">Reserved (Prior DCB Usage)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Reserved (Prior DCB Usage)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">5</p></td>
+<td align="left" valign="top"><p class="table">I2C Access Method</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">6</p></td>
+<td align="left" valign="top"><p class="table">Display Port AUX Channel Access Method</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_i2c_access_method">I2C Access Method</h4>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">I2CAccess = 5</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Reserved</p></td>
+<td colspan="3" align="center" valign="top"><p class="table">Rsv</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">DP</p></td>
+<td align="center" valign="top"><p class="table">H</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Speed</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Phys Port</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="21%" />
+<col width="7%" />
+<col width="71%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Physical Port</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Physical Nv5x Port</p>
+<p class="table">* 0 = DDC0
+* 1 = DDC1
+* 2 = DDC2
+* 3 = I2C</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Port Speed</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">The I2C spec defines 3 different communication speeds:
+* Standard - 100 kHz
+* Fast - 400 kHz
+* High Speed - 3.4 MHz</p>
+<p class="table">Each device on an I2C bus must comply with that speed otherwise, the
+lowest device on that bus will clock stall the speed to what it can
+handle. High Speed requires extra programming to allow a specific
+master to send the high speed data. There are programming requirements
+to also allow for the fallback between higher level speeds and lower
+levels speeds.</p>
+<p class="table">No traffic on the I2C port may exceed the speed specified here.</p>
+<p class="table">Most (perhaps all) DCBs set this field to 0. The currently defined levels are:</p>
+<p class="table">* 0x0 = Use Defaults (Probably the only one we&#8217;ll ever use.)
+* 0x1 = 100 kHz as per Standard specification
+* 0x2 = 200 kHz
+* 0x3 = 400 kHz as per Fast specification
+* 0x4 = 800 kHz
+* 0x5 = 1.6 MHz
+* 0x6 = 3.4 MHz as per High Speed specification
+* 0x7 = 60 KHz</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Hybrid Pad</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">This bit is used to tell us if we&#8217;re enabling Hybrid Pad control for this entry. Hybrid pad control requires that we switch bits in the NV_PMGR_HYBRID_PADCTL area when switching between I2C output and DPAux output. The values here are:</p>
+<p class="table">* 0 = Normal Mode - Generic I2C Port
+* 1 = Hybrid Mode - Pad allows for switching between DPAux and I2C</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Physical DP Aux Port</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">This is the physical DP Aux port used only when Hybrid Pad field is in Hybrid Mode. We need this value since NV_PMGR_HYBRID_PADCTL is indexed based on the DP Port value.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Reserved</p></td>
+<td align="left" valign="top"><p class="table">11</p></td>
+<td align="left" valign="top"><p class="table">Set as 0.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">I2C Access Method</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Must be set to 5 for this Access Method</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_display_port_aux_channel_access_method">Display Port AUX Channel Access Method</h4>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">DP Aux Access = 6</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Reserved</p></td>
+<td colspan="3" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">I2C</p></td>
+<td align="center" valign="top"><p class="table">H</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Phys Port</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="21%" />
+<col width="7%" />
+<col width="71%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Port</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Physical Display Ports</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">H</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Hybrid Pad</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">I2C</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Physical I2C Port</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">11</p></td>
+<td align="left" valign="top"><p class="table">Reserved. Set as 0.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Type</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Display Port AUX Channel Access Method = 6</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="ulist"><div class="title">Physical Display Port mappings:</div><ul>
+<li>
+<p>
+0 = AUXCH 0
+</p>
+</li>
+<li>
+<p>
+1 = AUXCH 1
+</p>
+</li>
+<li>
+<p>
+2 = AUXCH 2
+</p>
+</li>
+<li>
+<p>
+3 = AUXCH 3
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Hybrid Pad</div><p>This bit is used to tell us if we&#8217;re enabling Hybrid Pad control for
+this entry. Hybrid pad control requires that we switch bits in the
+NV_PMGR_HYBRID_PADCTL area when switching between I2C output and DPAux
+output. The values here are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Normal Mode - Generic I2C Port
+</p>
+</li>
+<li>
+<p>
+1 = Hybrid Mode - Pad allows for switching between DPAux and I2C
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Physical I2C Port</div><p>This is the physical I2C port used only when Hybrid Pad field is in Hybrid Mode.</p></div>
+<div class="paragraph"><div class="title">Type</div><p>Must be set to 6 to indicate Display Port AUX Channel Access Method</p></div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_input_devices_table">Input Devices Table</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>This structure is optional. It only needs to be defined if the board
+provides input devices. Also, the VBIOS or FCODE does not need to use
+this structure. Only the drivers will use it.</p></div>
+<div class="paragraph"><p>The Input Devices are listed at a location in the ROM dictated by the
+16-bit Input Devices Pointer listed in the DCB Header. Currently,
+the maximum number of devices is 8. Each device is listed in one 8-bit
+entry.</p></div>
+<div class="paragraph"><p>If a device has an Input Device Structure, but not a
+<a href="#_personal_cinema_table">Personal Cinema</a> Structure defined, we treat
+that board as a generic VIVO (Video-In, Video-Out) board.</p></div>
+<div class="paragraph"><p>It is assumed that each of these Input Devices is controlled via I2C
+through the Primary Communications Port.</p></div>
+<div class="sect2">
+<h3 id="_input_devices_header">Input Devices Header</h3>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="21%" />
+<col width="7%" />
+<col width="71%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Version</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Version # of the Input Devices Header and Entries.
+Input Devices 4.0 start with a version of 0x40.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Header Size</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Size of the Input Devices Header in Bytes. Initially, this is 4 bytes.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Entry Count</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Number of Input Devices Entries starting directly after the end of this table.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Entry Size</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Size of Each Entry in bytes. This field should be 1.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_input_device_entry">Input Device Entry</h3>
+<div class="tableblock">
+<table rules="all"
+width="20%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<thead>
+<tr>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="2" align="center" valign="top"><p class="table">VT</p></td>
+<td colspan="2" align="center" valign="top"><p class="table">T</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Mode</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="83%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Mode</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">This field lists the Mode number that this device supports. If we
+encounter a Mode of 0xF, that signifies a Skip Entry. This allows for
+quick removal of a specific entry from the Input Devices.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Type</p></td>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">This field describes the type of input device that is connected. Current
+defined possible values are:</p>
+<p class="table">* 0 = VCR,
+* 1 = TV</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Video Type</p></td>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">This field describes the video type of input device that is connected.</p>
+<p class="table">Currently defined values are:</p>
+<p class="table">* 0 = CVBS,
+* 1 = Tuner,
+* 2 = S-Video</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_personal_cinema_table">Personal Cinema Table</h2>
+<div class="sectionbody">
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">"Personal Cinema" refers to a line of graphics boards with pre-G80
+NVIDIA GPUs and on-board television tuners.</td>
+</tr></table>
+</div>
+<div class="paragraph"><p>This structure is optional. It only needs to be defined if the board is
+intending to provide Personal Cinema support. The VBIOS or FCODE
+does not need to use this structure. Only the drivers will use it.</p></div>
+<div class="paragraph"><p>There are many specific defines needed for the personal cinema in order
+to know which devices are available. Because there are no entries
+needed for this table, the normal Entry Count and Entry Size will not be
+a part of this table for now.</p></div>
+<div class="paragraph"><p>If both the Board ID and the Vendor ID are 0, then the Personal Cinema
+Table data should be considered invalid. This is akin to other table&#8217;s
+SKIP ENTRY, meaning that we should just skip this table if these IDs are
+both 0.</p></div>
+<div class="paragraph"><p>If a device has an <a href="#_input_devices_table">Input Devices Table</a>, but not
+a Personal Cinema Structure defined, we treat that board as a generic
+VIVO (Video-In, Video-Out) board.</p></div>
+<div class="paragraph"><p>It is assumed that each of these Personal Cinema Devices is controlled
+via I2C through the Primary Communications Port.</p></div>
+<div class="sect2">
+<h3 id="_personal_cinema_table_structure">Personal Cinema Table Structure</h3>
+<div class="tableblock">
+<table rules="all"
+width="82%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top"> 9</th>
+<th align="center" valign="top"> 8</th>
+<th align="center" valign="top"> 7</th>
+<th align="center" valign="top"> 6</th>
+<th align="center" valign="top"> 5</th>
+<th align="center" valign="top"> 4</th>
+<th align="center" valign="top"> 3</th>
+<th align="center" valign="top"> 2</th>
+<th align="center" valign="top"> 1</th>
+<th align="center" valign="top"> 0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Vendor ID</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Board ID</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Header Size</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Version</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">63</th>
+<th align="center" valign="top">62</th>
+<th align="center" valign="top">61</th>
+<th align="center" valign="top">60</th>
+<th align="center" valign="top">59</th>
+<th align="center" valign="top">58</th>
+<th align="center" valign="top">57</th>
+<th align="center" valign="top">56</th>
+<th align="center" valign="top">55</th>
+<th align="center" valign="top">54</th>
+<th align="center" valign="top">53</th>
+<th align="center" valign="top">52</th>
+<th align="center" valign="top">51</th>
+<th align="center" valign="top">50</th>
+<th align="center" valign="top">49</th>
+<th align="center" valign="top">48</th>
+<th align="center" valign="top">47</th>
+<th align="center" valign="top">46</th>
+<th align="center" valign="top">45</th>
+<th align="center" valign="top">44</th>
+<th align="center" valign="top">43</th>
+<th align="center" valign="top">42</th>
+<th align="center" valign="top">41</th>
+<th align="center" valign="top">40</th>
+<th align="center" valign="top">39</th>
+<th align="center" valign="top">38</th>
+<th align="center" valign="top">37</th>
+<th align="center" valign="top">36</th>
+<th align="center" valign="top">35</th>
+<th align="center" valign="top">34</th>
+<th align="center" valign="top">33</th>
+<th align="center" valign="top">32</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="4" align="center" valign="top"><p class="table">IRCtrl</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">PwrCtrlIC</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Demod1</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">ATuner 1</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">SndDcd1</p></td>
+<td colspan="2" align="center" valign="top"><p class="table">Std</p></td>
+<td colspan="2" align="center" valign="top"><p class="table">Eio</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">95</th>
+<th align="center" valign="top">94</th>
+<th align="center" valign="top">93</th>
+<th align="center" valign="top">92</th>
+<th align="center" valign="top">91</th>
+<th align="center" valign="top">90</th>
+<th align="center" valign="top">89</th>
+<th align="center" valign="top">88</th>
+<th align="center" valign="top">87</th>
+<th align="center" valign="top">86</th>
+<th align="center" valign="top">85</th>
+<th align="center" valign="top">84</th>
+<th align="center" valign="top">83</th>
+<th align="center" valign="top">82</th>
+<th align="center" valign="top">81</th>
+<th align="center" valign="top">80</th>
+<th align="center" valign="top">79</th>
+<th align="center" valign="top">78</th>
+<th align="center" valign="top">77</th>
+<th align="center" valign="top">76</th>
+<th align="center" valign="top">75</th>
+<th align="center" valign="top">74</th>
+<th align="center" valign="top">73</th>
+<th align="center" valign="top">72</th>
+<th align="center" valign="top">71</th>
+<th align="center" valign="top">70</th>
+<th align="center" valign="top">69</th>
+<th align="center" valign="top">68</th>
+<th align="center" valign="top">67</th>
+<th align="center" valign="top">66</th>
+<th align="center" valign="top">65</th>
+<th align="center" valign="top">64</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Demod2</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td colspan="3" align="center" valign="top"><p class="table">T2F</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td colspan="3" align="center" valign="top"><p class="table">T1F</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">ATuner2</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">SndDcd2</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="83%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Version</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Version = 0x40</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Header Size</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Size in bytes, 12 for v4.0</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Board ID</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Personal Cinema Board ID for this board</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Vendor ID</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Vendor ID for this board</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Eio</p></td>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Expander IO bus width</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">TVStd</p></td>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">TV Standard used e.g. NTSC or PAL</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">SndDec1</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Sound Decoder #1 ID</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">ATuner1</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Analog Tuner #1 type, the first analog tuner</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Demod1</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Demodulator #1, the first digital-signal tuner</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">PwrCtrlIC</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Satellite Dish power controller IC type</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">IRCtrl</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">The InfraRed transmitter microcontroller type</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">SndDec2</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Sound Decoder #2 ID</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">ATuner2</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Analog Tuner #2 type.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">T1F</p></td>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">Tuner #1 Functionality, digitial TV, analog TV and FM.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Reserved</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">T2F</p></td>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">Tuner #2 Functionality</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Reserved</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Demod2</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Demodulator #2, the second digital-signal tuner</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Version</div><p>Version # of the Personal Cinema Header. The original Personal Cinema
+table version will start with a value of 0x40 here. If the version is 0
+here, then the driver will assume that this table is invalid.</p></div>
+<div class="paragraph"><div class="title">Header Size</div><p>Size of the Personal Cinema Header in bytes. This is 12 bytes for v4.0.</p></div>
+<div class="paragraph"><div class="title">Board ID</div><p>This field lists the Personal Cinema Board ID for this board. This provides
+a mechanism for SW to differentiate between individual Personal Cinema boards
+and generic Video-In-Video-Out (VIVO) boards.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x00 = Generic VIVO board or No Personal Cinema Support
+</p>
+</li>
+<li>
+<p>
+0x01 = P79
+</p>
+</li>
+<li>
+<p>
+0x02 = P104
+</p>
+</li>
+<li>
+<p>
+0x03 = P164-NV31
+</p>
+</li>
+<li>
+<p>
+0x04 = P164-NV34
+</p>
+</li>
+<li>
+<p>
+0x05 = P186-NV35
+</p>
+</li>
+<li>
+<p>
+0x06 = P187-NV35
+</p>
+</li>
+<li>
+<p>
+0x07 = P178-NV36
+</p>
+</li>
+<li>
+<p>
+0x08 = P253-NV43
+</p>
+</li>
+<li>
+<p>
+0x09 = P254-NV44
+</p>
+</li>
+<li>
+<p>
+0x0A = P178-NV36-A2M
+</p>
+</li>
+<li>
+<p>
+0x0B = P293
+</p>
+</li>
+<li>
+<p>
+0x0C = P178-NV36-FPGA
+</p>
+</li>
+<li>
+<p>
+0x0D = P143-NV34-FPGA
+</p>
+</li>
+<li>
+<p>
+0x0E = P143-NV34-Non-FPGA
+</p>
+</li>
+<li>
+<p>
+0x10 = P256-NV43
+</p>
+</li>
+<li>
+<p>
+0x11 = Compro
+</p>
+</li>
+<li>
+<p>
+0x13 = P274-NV41
+</p>
+</li>
+<li>
+<p>
+0x21 = Asus AIO
+</p>
+</li>
+<li>
+<p>
+0x22 = Asus external tuner
+</p>
+</li>
+<li>
+<p>
+0x30 = Customer Reserved 0
+</p>
+</li>
+<li>
+<p>
+0x31 = Customer Reserved 1
+</p>
+</li>
+<li>
+<p>
+0x32 = Customer Reserved 2
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Vendor ID</div><p>This field lists the Personal Cinema Vendor ID for this board. Current
+defined possible values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x00 = Generic VIVO board or No Personal Cinema Support
+</p>
+</li>
+<li>
+<p>
+0xde = NVIDIA
+</p>
+</li>
+<li>
+<p>
+0xcb = Compro
+</p>
+</li>
+<li>
+<p>
+0x81 = Asus
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Expander IO</div><p>This field describes the exact number of bits used for the expander IO
+bus.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = None or Not Applicable
+</p>
+</li>
+<li>
+<p>
+1 = 8 bits
+</p>
+</li>
+<li>
+<p>
+2 = 16 bits
+</p>
+</li>
+<li>
+<p>
+3 = RF remote
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">TV Standard</div><p>This field describes the TV standard used for the input devices.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = NTSC
+</p>
+</li>
+<li>
+<p>
+1 = PAL/SECAM
+</p>
+</li>
+<li>
+<p>
+2 = Worldwide
+</p>
+</li>
+<li>
+<p>
+3 = Reserved
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Sound Decoder #1</div><p>This field describes the first Sound Decoder used on the board. Current
+defined possible values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Mono
+</p>
+</li>
+<li>
+<p>
+2 = A2 (TDA9873)
+</p>
+</li>
+<li>
+<p>
+3 = NICAM (TDA9874)
+</p>
+</li>
+<li>
+<p>
+4 = BTSC (TDA9850)
+</p>
+</li>
+<li>
+<p>
+5 = FM-FM Japan (TA8874z)
+</p>
+</li>
+<li>
+<p>
+6 = BTSC/EIAJ (SAA7133/SAA7173)
+</p>
+</li>
+<li>
+<p>
+7 = A2,NICAM (SAA7134/SAA7174)
+</p>
+</li>
+<li>
+<p>
+8 = Worldwide (SAA7135/SAA7175)
+</p>
+</li>
+<li>
+<p>
+9 = Micronas MSP 3425G (NTSC)
+</p>
+</li>
+<li>
+<p>
+10 = Micronas MSP 3415G (PAL)
+</p>
+</li>
+<li>
+<p>
+11 = SAA7174A
+</p>
+</li>
+<li>
+<p>
+12 = SAA7171
+</p>
+</li>
+<li>
+<p>
+15 = Not Present
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Tuner Type #1</div><p>This field describes the first analog-signal tuner used on the
+board.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x00 = Not Present
+</p>
+</li>
+<li>
+<p>
+0x01 = Philips FI1216 MK2
+</p>
+</li>
+<li>
+<p>
+0x02 = Philips FI1216 MF
+</p>
+</li>
+<li>
+<p>
+0x03 = Philips FI1236 MK2
+</p>
+</li>
+<li>
+<p>
+0x04 = Philips FI1246 MK2
+</p>
+</li>
+<li>
+<p>
+0x05 = Philips FI1256 MK2
+</p>
+</li>
+<li>
+<p>
+0x06 = Philips FQ1216 ME
+</p>
+</li>
+<li>
+<p>
+0x07 = Philips FQ1216 ME MK3
+</p>
+</li>
+<li>
+<p>
+0x08 = Philips FQ1236 ME MK3
+</p>
+</li>
+<li>
+<p>
+0x09 = Philips TDA 8275
+</p>
+</li>
+<li>
+<p>
+0x11 = Temic 4036FY5,4032FY5
+</p>
+</li>
+<li>
+<p>
+0x12 = Temic 4006FH5,4002FH5
+</p>
+</li>
+<li>
+<p>
+0x13 = Temic 4066FY5,4036FY5
+</p>
+</li>
+<li>
+<p>
+0x14 = Temic 4016FY5,4012FY5
+</p>
+</li>
+<li>
+<p>
+0x15 = Temic 4136
+</p>
+</li>
+<li>
+<p>
+0x16 = Temic 4146
+</p>
+</li>
+<li>
+<p>
+0x17 = Microtune MT2040
+</p>
+</li>
+<li>
+<p>
+0x18 = Microtune MT2050
+</p>
+</li>
+<li>
+<p>
+0x19 = Microtune 7102DT5
+</p>
+</li>
+<li>
+<p>
+0x20 = Microtune 7132DT5
+</p>
+</li>
+<li>
+<p>
+0x21 = Microtune MT2060
+</p>
+</li>
+<li>
+<p>
+0x22 = Microtune 4039FR5
+</p>
+</li>
+<li>
+<p>
+0x23 = Microtune 4049FM5
+</p>
+</li>
+<li>
+<p>
+0x30 = LG TALN-M200T (PAL)
+</p>
+</li>
+<li>
+<p>
+0x31 = LG TALN-H200T (NTSC)
+</p>
+</li>
+<li>
+<p>
+0x32 = TALN-S200T (SECAM L/L' &amp; PAL B/G, I/I, D/K)
+</p>
+</li>
+<li>
+<p>
+0x60 = Samsung TEBN9282PK01A
+</p>
+</li>
+<li>
+<p>
+0x81 = Philips FM1216
+</p>
+</li>
+<li>
+<p>
+0x82 = Philips FM1216MF
+</p>
+</li>
+<li>
+<p>
+0x83 = Philips FM1236
+</p>
+</li>
+<li>
+<p>
+0x84 = Philips FM1246
+</p>
+</li>
+<li>
+<p>
+0x85 = Philips FM1256
+</p>
+</li>
+<li>
+<p>
+0x86 = Philips FM1216 ME
+</p>
+</li>
+<li>
+<p>
+0x87 = Philips FM1216 ME MK3
+</p>
+</li>
+<li>
+<p>
+0x88 = Philips FM1236 ME MK3
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Demodulator #1</div><p>The first digital-signal tuner used this board. This field has these hex
+defines:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x00 = Not present
+</p>
+</li>
+<li>
+<p>
+0x01 = TDA9885 (PAL/NTSC Analog)
+</p>
+</li>
+<li>
+<p>
+0x02 = TDA9886 (PAL/NTSC/SECAM Analog)
+</p>
+</li>
+<li>
+<p>
+0x03 = TDA9887 (PAL/NTSC/SECAM QSS Analog)
+</p>
+</li>
+<li>
+<p>
+0x04 = Philips SAA7171
+</p>
+</li>
+<li>
+<p>
+0x10 = Conexant CX24121
+</p>
+</li>
+<li>
+<p>
+0x15 = Phillips TDA8260TW
+</p>
+</li>
+<li>
+<p>
+0x16 = Zarlink MT352
+</p>
+</li>
+<li>
+<p>
+0x17 = LGDT3302
+</p>
+</li>
+<li>
+<p>
+0x18 = Micronas DRX3960A
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Power Control IC</div><p>Satellite Dish power controller. This field has these hex defines:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Not present
+</p>
+</li>
+<li>
+<p>
+1 = LNBP21 - I2C Address 0x10
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Microcontroller</div><p>The microcontroller chip used for infrared (IR) transmitting to control
+other IR devices. This field has these values</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Not present
+</p>
+</li>
+<li>
+<p>
+6 = PIC12F629
+</p>
+</li>
+<li>
+<p>
+7 = PIC12CE673
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Sound Decoder #2</div><p>This field describes a possible second Sound Decoder used on the
+board. The values are the same as with Sound Decoder #1.</p></div>
+<div class="paragraph"><div class="title">Tuner Type #2</div><p>This field describes a possible second analog-signal tuner used on the
+board. The values are the same as with Tuner Type #1.</p></div>
+<div class="paragraph"><div class="title">Tuner #1 Functionality</div><p>This field describes the functionality supported by Tuner #1.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = None
+</p>
+</li>
+<li>
+<p>
+1 = Digital TV
+</p>
+</li>
+<li>
+<p>
+2 = Analog TV
+</p>
+</li>
+<li>
+<p>
+3 = Analog + Digital TV
+</p>
+</li>
+<li>
+<p>
+4 = FM
+</p>
+</li>
+<li>
+<p>
+5 = Digital + FM
+</p>
+</li>
+<li>
+<p>
+6 = Analog + FM
+</p>
+</li>
+<li>
+<p>
+7 = Analog + Digital + FM
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Tuner #2 Functionality</div><p>This field describes the functionality allowed by Tuner Type #2 field.
+The currently defined values are the same as those for Tuner #1 Functionality.</p></div>
+<div class="paragraph"><div class="title">Demodulator #2</div><p>The possible second digital-signal tuner used this board. This field has
+the same defines as Demodulator #1.</p></div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_gpio_assignment_table">GPIO Assignment Table</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The GPIO Assignment table creates a logical mapping of function-based
+usage names to physical GPIOs within the GPU. Each pin has</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+a logical ON State and
+</p>
+</li>
+<li>
+<p>
+a logical OFF State.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Each state can be distinctly defined physically via:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Sending output high to the GPIO,
+</p>
+</li>
+<li>
+<p>
+Sending output low to the GPIO, or
+</p>
+</li>
+<li>
+<p>
+Tristating the GPIO (Setting it to Input Mode).
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Alternately, specific GPIOs can also be assigned to carry Pulse Width
+Modulated (PWM) signals. This can be used for fan speed control or
+backlight power control.</p></div>
+<div class="paragraph"><p>This table is required in all ROMs. It must be listed inside every DCB.
+The VBIOS and the FCODE will use the data from this structure.</p></div>
+<div class="sect2">
+<h3 id="_gpio_assignment_table_header">GPIO Assignment Table Header</h3>
+<div class="paragraph"><p>When moving to GF110, the HW team merged the Normal/Alternate/Sequencer
+modes of the GPIO into one 8 bit field in a GPIO register. In order to
+better manage that change, we decided to increase the revision from the
+initial 0x40 version to 0x41 and re-organize the bit fields in each GPIO
+table entry to accommodate a new field that matches the field in the HW
+register directly.</p></div>
+<div class="paragraph"><p>Version 0x41, as used for GF11x+ / Core75 and future cores, is
+listed below.</p></div>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<caption class="title">Table 3. GPIO Assignment Table Header Version 4.1</caption>
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top"> 9</th>
+<th align="center" valign="top"> 8</th>
+<th align="center" valign="top"> 7</th>
+<th align="center" valign="top"> 6</th>
+<th align="center" valign="top"> 5</th>
+<th align="center" valign="top"> 4</th>
+<th align="center" valign="top"> 3</th>
+<th align="center" valign="top"> 2</th>
+<th align="center" valign="top"> 1</th>
+<th align="center" valign="top"> 0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Size = 5</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Count</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Header Size = 6</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Version = 0x41</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="40%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<thead>
+<tr>
+<th align="center" valign="top">47</th>
+<th align="center" valign="top">46</th>
+<th align="center" valign="top">45</th>
+<th align="center" valign="top">44</th>
+<th align="center" valign="top">43</th>
+<th align="center" valign="top">42</th>
+<th align="center" valign="top">41</th>
+<th align="center" valign="top">40</th>
+<th align="center" valign="top">39</th>
+<th align="center" valign="top">38</th>
+<th align="center" valign="top">37</th>
+<th align="center" valign="top">36</th>
+<th align="center" valign="top">35</th>
+<th align="center" valign="top">34</th>
+<th align="center" valign="top">33</th>
+<th align="center" valign="top">32</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="16" align="center" valign="top"><p class="table">GPIOAssTabPtr</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Version</div><p>Version # of the GPIO Assignment Table Header and Entries. The current
+GPIO Assignment Table version is 4.1 or a value of 0x41 in this field.
+If this version is 0, then the driver will assume that this table
+is invalid.</p></div>
+<div class="paragraph"><div class="title">Header Size</div><p>Size of the GPIO Assignment Table in bytes. For version 4.1 this is 6 bytes.</p></div>
+<div class="paragraph"><div class="title">Entry Count</div><p>Number of GPIO Assignment Table Entries starting directly after the end
+of this header.</p></div>
+<div class="paragraph"><div class="title">Entry Size</div><p>Size of Each Entry in bytes. For version 4.0, this was 4 bytes. For
+version 4.1, this is now 5 bytes.</p></div>
+<div class="paragraph"><div class="title">External GPIO Assignment Table Master Header Pointer</div><p>Pointer to the <a href="#_external_gpio_assignment_master_table">External GPIO Assignment Master Table</a>. This field can be set to 0 to indicate no
+support for this table.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_gpio_assignment_table_entry">GPIO Assignment Table Entry</h3>
+<div class="paragraph"><p>Please note that this structure below is for version 4.1.</p></div>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">PM</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">GS</p></td>
+<td colspan="5" align="center" valign="top"><p class="table">Input HW Select</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Output HW Select</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Function</p></td>
+<td align="center" valign="top"><p class="table">I</p></td>
+<td align="center" valign="top"><p class="table">IO</p></td>
+<td colspan="6" align="center" valign="top"><p class="table">PinNum</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="20%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<thead>
+<tr>
+<th align="center" valign="top">39</th>
+<th align="center" valign="top">38</th>
+<th align="center" valign="top">37</th>
+<th align="center" valign="top">36</th>
+<th align="center" valign="top">35</th>
+<th align="center" valign="top">34</th>
+<th align="center" valign="top">33</th>
+<th align="center" valign="top">32</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">OE</p></td>
+<td align="center" valign="top"><p class="table">OT</p></td>
+<td align="center" valign="top"><p class="table">FE</p></td>
+<td align="center" valign="top"><p class="table">FT</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">LockPin</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="20%" />
+<col width="13%" />
+<col width="66%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">PinNum</p></td>
+<td align="left" valign="top"><p class="table">6 (5:0)</p></td>
+<td align="left" valign="top"><p class="table">GPIO Pin Number</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">IO</p></td>
+<td align="left" valign="top"><p class="table">1 (6:6)</p></td>
+<td align="left" valign="top"><p class="table">I/O Type</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">I</p></td>
+<td align="left" valign="top"><p class="table">1 (7:7)</p></td>
+<td align="left" valign="top"><p class="table">Initialize pin state</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Function</p></td>
+<td align="left" valign="top"><p class="table">8 (15:8)</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Output HW select</p></td>
+<td align="left" valign="top"><p class="table">8 (23:16)</p></td>
+<td align="left" valign="top"><p class="table">Output hardware function setting</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Input HW select</p></td>
+<td align="left" valign="top"><p class="table">5 (28:24)</p></td>
+<td align="left" valign="top"><p class="table">Input hardware function setting</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">GS</p></td>
+<td align="left" valign="top"><p class="table">1 (29:29)</p></td>
+<td align="left" valign="top"><p class="table">GSYNC Header</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="left" valign="top"><p class="table">1 (30:30)</p></td>
+<td align="left" valign="top"><p class="table">Reserved</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">PM</p></td>
+<td align="left" valign="top"><p class="table">1 (31:31)</p></td>
+<td align="left" valign="top"><p class="table">Pulse Width Modulate</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">LockPin</p></td>
+<td align="left" valign="top"><p class="table">4 (35:32)</p></td>
+<td align="left" valign="top"><p class="table">Lock Pin Number</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">FT</p></td>
+<td align="left" valign="top"><p class="table">1 (36:36)</p></td>
+<td align="left" valign="top"><p class="table">Off Data</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">FE</p></td>
+<td align="left" valign="top"><p class="table">1 (37:37)</p></td>
+<td align="left" valign="top"><p class="table">Off Enable</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">OT</p></td>
+<td align="left" valign="top"><p class="table">1 (38:38)</p></td>
+<td align="left" valign="top"><p class="table">On Data</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">OE</p></td>
+<td align="left" valign="top"><p class="table">1 (39:39)</p></td>
+<td align="left" valign="top"><p class="table">On Enable</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">GPIO Number (5:0)</div><p>The GPIO number associated with this entry. Older chips have a maximum of 9
+GPIO pins. G80+ have 15 GPIOs in register space. This field must be 0
+if the I/O Type field is set to NV_GPIO_IO_TYPE_DEDICATED_LOCK_PIN.</p></div>
+<div class="paragraph"><div class="title">I/O Type</div><p>The I/O Type field is used to specify if this entry represents an actual
+GPIO or instead represents a similar type of entity. This field is an
+enumeration that currently has the following values:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = NV_GPIO_IO_TYPE_GPIO - This entry represents a normal internal GPIO.
+</p>
+</li>
+<li>
+<p>
+1 = NV_GPIO_IO_TYPE_DEDICATED_LOCK_PIN - This entry represents an internal
+ dedicated lock pin. No actual GPIO is associated with the lock pin. The
+ GPIO Number field must be set to zero.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Initialize State (Init) (7:7)</div><p>This field specifies the initial state to set the GPIO to during boot.
+If this bit is 0, then the software will initialize the GPIO at boot to
+the settings specified by "Off Data" and "Off Enable". If this bit is
+1, then the software will initialize the GPIO at boot to the settings
+specified by "On Data" and "On Enable".</p></div>
+<div class="paragraph"><div class="title">Function (15:8)</div><p>This lists the function of each GPIO pin. Here&#8217;s a list of the function
+numbers and a short description of each:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = LCD0 backlight: Backlight control. LCD0 corresponds to the LCD0 defined
+ in the LCD ID field in the Connector Table.
+</p>
+</li>
+<li>
+<p>
+1 = LCD0 power: Panel Power control. LCD0 corresponds to the LCD0 defined in
+ the LCD ID field in the Connector Table.
+</p>
+</li>
+<li>
+<p>
+2 = LCD0 Power Status: Panel Power status. LCD0 corresponds to the LCD0
+ defined in the LCD ID field in the Connector Table.
+</p>
+</li>
+<li>
+<p>
+3 = VSYNC: Alternate VSync signal using GPIO pin.
+</p>
+</li>
+<li>
+<p>
+4 = VSEL0: Voltage Select Bit 0
+</p>
+</li>
+<li>
+<p>
+5 = VSEL1: Voltage Select Bit 1
+</p>
+</li>
+<li>
+<p>
+6 = VSEL2: Voltage Select Bit 2
+</p>
+</li>
+<li>
+<p>
+7 = Hotplug A: 1st Hotplug signal
+</p>
+</li>
+<li>
+<p>
+8 = Hotplug B: 2nd Hotplug signal
+</p>
+</li>
+<li>
+<p>
+9 = Fan: Fan control. Can be on or off, or pulse width modulation to control speed.
+</p>
+</li>
+<li>
+<p>
+10 = Reserved
+</p>
+</li>
+<li>
+<p>
+11 = Reserved
+</p>
+</li>
+<li>
+<p>
+12 = DAC 1 Select: DAC 1 mux select that allows us to switch between using
+ the CRT (Off state) or TV (On State) filters on the board.
+</p>
+</li>
+<li>
+<p>
+13 = DAC 1 Alternate Load Detect: When the DAC 1 is not currently switched to
+ a device that needs detection, this GPIO pin can be used to detect the
+ alternate load on the green channel.
+</p>
+</li>
+<li>
+<p>
+14 = Stereo DAC Select: Chooses which DAC to use for the stereo goggles.
+</p>
+</li>
+<li>
+<p>
+15 = Stereo toggle: Switch between Left and Right eyes for the stereo goggles.
+</p>
+</li>
+<li>
+<p>
+16 = Thermal and External Power Detect: Sense bit when there&#8217;s a thermal
+ event or the external power connector is connected or removed from the board.
+</p>
+</li>
+<li>
+<p>
+17 = Thermal Event Detect: Sense bit when there&#8217;s a thermal event sent from
+ the thermal device.
+</p>
+</li>
+<li>
+<p>
+18 = Vtg rst: Input Signal from daughter card for Frame Lock interface headers.
+</p>
+</li>
+<li>
+<p>
+19 = Sus stat: Input requesting the suspend state be entered
+</p>
+</li>
+<li>
+<p>
+20 = Spread0: Bit 0 of output to control Spread Spectrum if the chip isn&#8217;t I2C controlled.
+</p>
+</li>
+<li>
+<p>
+21 = Spread1: Bit 1 of output to control Spread Spectrum if the chip isn&#8217;t I2C controlled.
+</p>
+</li>
+<li>
+<p>
+22 = VDS FrameID0 - Bit 0 of the frame ID when using Virtual Display Switching.
+</p>
+</li>
+<li>
+<p>
+23 = VDS FrameID1: Bit 1 of the frame ID when using Virtual Display Switching.
+</p>
+</li>
+<li>
+<p>
+24 = FBVDDQ Select: Selects between:
+</p>
+</li>
+<li>
+<p>
+: ON state: High FBVDD/Q voltage (i.e. 1.8V)
+</p>
+</li>
+<li>
+<p>
+: OFF State: Low FBVDD/Q voltage (i.e. 1.5V)
+</p>
+</li>
+<li>
+<p>
+25 = Customer: This function is here to be used by the OEM. It just reserves
+ the GPIO so our software will know not to use it.
+</p>
+</li>
+<li>
+<p>
+26 = VSEL 3: Voltage Select Bit 3
+</p>
+</li>
+<li>
+<p>
+27 = VSEL Default - Allow switching from default voltage (1) to selected voltage (0).
+</p>
+</li>
+<li>
+<p>
+28 = Tuner
+</p>
+</li>
+<li>
+<p>
+29 = Current Share
+</p>
+</li>
+<li>
+<p>
+30 = Current Share Enable
+</p>
+</li>
+<li>
+<p>
+31 = LCD0 Self Test. LCD0 corresponds to the LCD0 defined in LCD ID field in
+ Connector Table.
+</p>
+</li>
+<li>
+<p>
+32 = LCD0 Lamp Status. LCD0 corresponds to the LCD0 defined in LCD ID field
+ in Connector Table.
+</p>
+</li>
+<li>
+<p>
+33 = LCD0 Brightness - Allow brightness adjustment via PWM. (Must have PWM
+ set when this is selected.). LCD0 corresponds to the LCD0 defined in LCD ID
+ field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+34 = Required Power Sense. Similar to 16, but without the thermal half.
+</p>
+</li>
+<li>
+<p>
+35 = OverTemp - This GPIO will assert when the GPU has reached some
+ adjustable temperature threshold
+</p>
+</li>
+<li>
+<p>
+36 = HDTV Select: Allows selection of lines driven between SDTV - Off state,
+ and HDTV - On State.
+</p>
+</li>
+<li>
+<p>
+37 = HDTV Alt-Detect: Allows detection of the connectors that are not
+ selected by HDTV Select. That is, if HDTV Select is currently selecting SDTV,
+ then this GPIO would allow us to detect the presence of the HDTV connection.
+</p>
+</li>
+<li>
+<p>
+38 = Reserved
+</p>
+</li>
+<li>
+<p>
+39 = Optional Power Sense. Similar to 16 and 34, but without the thermal half
+ and not necessary for normal non-overclocked operation.1
+</p>
+</li>
+<li>
+<p>
+40 = DAC 0 Select: DAC 0 mux that allows us to switch between using the CRT
+ (Off state) or TV (On State) filters on the board.
+</p>
+</li>
+<li>
+<p>
+41 = Framelock daughter-card interrupt
+</p>
+</li>
+<li>
+<p>
+42 = SW Performance Level Slowdown. When asserted, the SW will lower it&#8217;s
+ performance level to the lowest state.
+</p>
+</li>
+<li>
+<p>
+43 = HW Slowdown Enable. On assertion HW will slowdown clocks (NVCLK, HOTCLK)
+ using either _EXT_POWER, _EXT_ALERT or _EXT_OVERT settings (depends on GPIO
+ configured: 12, 9 &amp; 8 respectively). Than SW will take over, limit GPU
+ p-state to battery level and disable slowdown. On deassertion SW will
+ reenable slowdown and remove p-state limit. System will continue running full
+ clocks.
+</p>
+</li>
+<li>
+<p>
+44 = Disable Power Sense. If asserted, this GPIO will remove the power sense
+ circuit from affecting HW Slowdown.
+</p>
+</li>
+<li>
+<p>
+45 = RSET HDTV Select. Allows selecting between SDTV, On State, and HDTV, Off
+ State, RSET values during TV detection.
+</p>
+</li>
+<li>
+<p>
+46 = FBVREF Select: Selects between:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+ON state: High FBVREF voltage (i.e. 70% FBVDDQ)
+</p>
+</li>
+<li>
+<p>
+OFF state: Low FBVREF voltage (i.e. 50% FBVDDQ)
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+47 = Reserved
+</p>
+</li>
+<li>
+<p>
+48 = Generic Initialized: This GPIO is used, but does not have a specific
+ function assigned to it or has a function defined elsewhere. System software
+ should initialize this GPIO using the _INIT values for the chip. This function
+ should be specified when a GPIO needs to be set statically during
+ initialization. This is different than function 25, which implies that the
+ GPIO is not used by NVIDIA software.
+</p>
+</li>
+<li>
+<p>
+49 = Inquiry for HD over SD TV boot preference. Allows user to select whether
+ to boot to SDTV or component output by default.
+</p>
+</li>
+<li>
+<p>
+50 = Digital Encoder Interrupt Enable: For Si1930uC, a GPIO will be set ON to
+ trigger interrupt to Si1930uC to enable I2C communication. When I2C
+ transactions to the Si1930uC are complete, the drivers will set this GPIO to
+ OFF.
+</p>
+</li>
+<li>
+<p>
+51 = Selects I2C communications between either DDC or I2C
+</p>
+</li>
+<li>
+<p>
+52 = Thermal Alert: Interrupt input from external thermal device. Indicates
+ that the device needs to be serviced.
+</p>
+</li>
+<li>
+<p>
+53 = Thermal Critical: Comparator-driven input from external thermal device.
+ Indicates that a temperature is above a critical limit.
+</p>
+</li>
+<li>
+<p>
+54 = Reserved
+</p>
+</li>
+<li>
+<p>
+55 = Reserved
+</p>
+</li>
+<li>
+<p>
+56 = Reserved
+</p>
+</li>
+<li>
+<p>
+57 = Reserved
+</p>
+</li>
+<li>
+<p>
+58 = Reserved
+</p>
+</li>
+<li>
+<p>
+59 = Reserved
+</p>
+</li>
+<li>
+<p>
+60 = SCART Select: Allows selection of lines driven between SDTV (S-Video,
+ Composite) and SDTV (SCART).
+</p>
+</li>
+<li>
+<p>
+61 = Fan Speed Sense. This GPIO will sense a fan&#8217;s tachometer output (on
+ 4-wire fans). In the beginning, it will be more for sensing a stuck fan than
+ determining speed. Later GPUs will be able to measure the fan&#8217;s speed
+ internally from the GPIO.
+</p>
+</li>
+<li>
+<p>
+62 = Reserved
+</p>
+</li>
+<li>
+<p>
+63 = ExtSync0 - Used with external framelock with GSYNC products. It also
+ could be used for raster lock.
+</p>
+</li>
+<li>
+<p>
+64 = SLI Raster Sync A: This signal is carried across the SLI bus to
+ synchronize the RG between GPUs. This signal will always be set as
+ Alternate.
+</p>
+</li>
+<li>
+<p>
+65 = SLI Raster Sync B: This signal is carried across the SLI bus to
+ synchronize the RG between GPUs. This signal will always be set as
+ Alternate. This signal is just the second GPIO that can be used for Raster
+ sync from each GPU. It should only be defined when we have 2 pin sets being
+ used on one board to allow more than two GPUs to run in SLI mode. One will
+ be used with one pin set for input and the other will be used with the other
+ pin set for output.
+</p>
+</li>
+<li>
+<p>
+66 = Swap Ready In A: This signal, which is related to Fliplocking, is used
+ to sense the state of the FET drain, which is pulled high and is connected to
+ the Swap Ready pin on the Distributed Rendering connector.
+</p>
+</li>
+<li>
+<p>
+67 = Swap Ready Out: This signal, which is related to Fliplocking, is used to
+ drive the gate of an external FET.
+</p>
+</li>
+<li>
+<p>
+68 = Available
+</p>
+</li>
+<li>
+<p>
+69 = SCART 0: Bit 0 of the SCART Aspect Ratio Field
+</p>
+</li>
+<li>
+<p>
+70 = SCART 1: Bit 1 of the SCART Aspect Ratio Field
+</p>
+</li>
+<li>
+<p>
+GPIOs 69 and 70 define a 2 bit SCART Aspect Ratio Field. Here&#8217;s the possible
+ values for the SCART Aspect Ratio Field:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = 4:3(12V)
+</p>
+</li>
+<li>
+<p>
+1 = 16:9(6V)
+</p>
+</li>
+<li>
+<p>
+2 = Undefined
+</p>
+</li>
+<li>
+<p>
+3 = SCART inactive (0 V)
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+71 HD Dongle Strap 0: Bit 0 of the HD Dongle Strap Field
+</p>
+</li>
+<li>
+<p>
+72 HD Dongle Strap 1: Bit 1 of the HD Dongle Strap Field
+</p>
+</li>
+</ul></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">GPIOs 71 and 72 define a 2 bit HD Dongle Strap Field. These two bits index
+into an array found at the
+<a href="#_hdtv_translation_table">HDTV Translation Table</a> that will determine the
+default HD standard.</td>
+</tr></table>
+</div>
+<div class="ulist"><ul>
+<li>
+<p>
+73 = Thermal Alert Output: Output signal that indicates to other board
+ component(s) that the gpu&#8217;s internal temp has exceeded a certain threshold
+ for a duration longer than a programmed interval.
+</p>
+</li>
+<li>
+<p>
+74 = DisplayPort to DVI dongle present A, when this GPIO asserts, we need to
+ configure DisplayPort encoder to output TMDS signal.
+</p>
+</li>
+<li>
+<p>
+75 = DisplayPort to DVI dongle present B, when this GPIO asserts, we need to
+ configure DisplayPort encoder to output TMDS signal.
+</p>
+</li>
+<li>
+<p>
+76 = Power Alert, when this GPIO asserts, the on-board power supply
+ controller needs attention.
+</p>
+</li>
+<li>
+<p>
+77 = DAC 0 Load Detect: When the DAC 0 is not currently switched to a device
+ that needs detection, this GPIO pin can be used to detect the alternate
+ display&#8217;s load on the green channel.
+</p>
+</li>
+<li>
+<p>
+78 = Analogix Encoder External Reset: For Analogix encoder, a GPIO is used to
+ control the RESET# line.
+</p>
+</li>
+<li>
+<p>
+79 = I2C SCL Keeper Circuit Enable. See {{Bug|273429}}. Possible logical values are:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+OFF state: Normal operation (do nothing)
+</p>
+</li>
+<li>
+<p>
+ON state: Enable the hardware to detect slave-issued stretches on the SCL
+ line and hold SCL low.
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+80 = DVI to DAC connector switch. This GPIO allows for DAC 0 (TV) to be
+ selected to route to the DVI Connector when the GPIO is set to the logical
+ OFF state. When the GPIO is set to logical ON state, DAC 1 (CRT) will be
+ routed to the DVI connector.
+</p>
+</li>
+<li>
+<p>
+81 = Hotplug C: 3rd Hotplug signal
+</p>
+</li>
+<li>
+<p>
+82 = Hotplug D: 4th Hotplug signal
+</p>
+</li>
+<li>
+<p>
+83 = DisplayPort to DVI dongle present C, when this GPIO asserts, we need to
+ configure DisplayPort encoder to output TMDS signal.
+</p>
+</li>
+<li>
+<p>
+84 = DisplayPort to DVI dongle present D, when this GPIO asserts, we need to
+ configure DisplayPort encoder to output TMDS signal.
+</p>
+</li>
+<li>
+<p>
+85 = Maxim Max6305 or compatible external reset controller. Enabled is Active
+ Low so init value should be Active High [No inversions]
+</p>
+</li>
+<li>
+<p>
+86 = Active display LED to indicate the GPU with active display in SLI mode.
+</p>
+</li>
+<li>
+<p>
+87 = SPDIF input.
+</p>
+</li>
+<li>
+<p>
+88 = TOSLINK input.
+</p>
+</li>
+<li>
+<p>
+89 = SPDIF/TOSLINK Select. When GPIO is set LOW, SPDIF is selected. When
+ GPIO is set HI, TOSLINK is selected.
+</p>
+</li>
+<li>
+<p>
+90 = DPAUX/I2C select A. When this GPIO is set to Logical ON state, DPAUX
+ will be selected. Logical OFF state selects I2C.
+</p>
+</li>
+<li>
+<p>
+91 = DPAUX/I2C select B. When this GPIO is set to Logical ON state, DPAUX
+ will be selected. Logical OFF state selects I2C.
+</p>
+</li>
+<li>
+<p>
+92 = DPAUX/I2C select C. When this GPIO is set to Logical ON state, DPAUX
+ will be selected. Logical OFF state selects I2C.
+</p>
+</li>
+<li>
+<p>
+93 = DPAUX/I2C select D. When this GPIO is set to Logical ON state, DPAUX
+ will be selected. Logical OFF state selects I2C.
+</p>
+</li>
+<li>
+<p>
+94 = Hotplug E: 5th Hotplug signal
+</p>
+</li>
+<li>
+<p>
+95 = Hotplug F: 6th Hotplug signal
+</p>
+</li>
+<li>
+<p>
+96 = Hotplug G: 7th Hotplug signal
+</p>
+</li>
+<li>
+<p>
+99 = GPIO External Device 1 Interrupt - Used to surface an interrupt from a
+ GPIO external device
+</p>
+</li>
+<li>
+<p>
+106 = Switched Outputs: This GPIO is used by the
+ <a href="#_switched_outputs_table">switched outputs table</a>. A switched outputs GPIO
+ must be processed by the INIT_GPIO_ALL devinit opcode and set to its init
+ state.
+</p>
+</li>
+<li>
+<p>
+107 = Customer Asyncronous Read/Write - Allows a customer to use the GPIO for
+ whatever purpose they want.
+</p>
+</li>
+<li>
+<p>
+108 = Access to MXM 3.0 bus&#8217;s Direct GPIO0 (Pin 26). Once the system has the
+ MXM structure/GPIO Device structure which defines usage of Direct GPIO0, this
+ GPU&#8217;s GPIO is the physical pin to take on any enabling/detection/disabling
+ function defined in the MXM Output Device data structure with MXM Direct
+ GPIO0.
+</p>
+</li>
+<li>
+<p>
+109 = Access to MXM 3.0 bus&#8217;s Direct GPIO1 (Pin 28). Once the system has the
+ MXM structure/GPIO Device structure which defines usage of Direct GPIO1, this
+ GPU&#8217;s GPIO is the physical pin to take on any enabling/detection/disabling
+ function defined in the MXM Output Device data structure with MXM Direct
+ GPIO1.
+</p>
+</li>
+<li>
+<p>
+110 = Access to MXM 3.0 bus&#8217;s Direct GPIO2 (Pin 30). Once the system has the
+ MXM structure/GPIO Device structure which defines usage of Direct GPIO2, this
+ GPU&#8217;s GPIO is the physical pin to take on any enabling/detection/disabling
+ function defined in the MXM Output Device data structure with MXM Direct
+ GPIO2.
+</p>
+</li>
+<li>
+<p>
+111 = HW Only Slowdown Enable. On assertion HW will slowdown clocks (NVCLK,
+ HOTCLK) using _EXT_POWER settings (use only with GPIO12). No software action
+ will be taken. On deassertion HW will release clock slowdown.
+</p>
+</li>
+<li>
+<p>
+112 = Swap Ready In B: This signal, which is related to Fliplocking, is used
+ to sense the state of the FET drain, which is pulled high and is connected to
+ the Swap Ready pin on the Distributed Rendering connector.
+</p>
+</li>
+<li>
+<p>
+113 = Trigger condition for PMU: Can either be triggered by system notify
+ bit set in SBIOS postbox command register or an error entering into
+ deep-idle.
+</p>
+</li>
+<li>
+<p>
+114 = Reserved for Swap Ready Out B
+</p>
+</li>
+<li>
+<p>
+115 = VSEL4: Voltage Select Bit 4
+</p>
+</li>
+<li>
+<p>
+116 = VSEL5: Voltage Select Bit 5
+</p>
+</li>
+<li>
+<p>
+117 = VSEL6: Voltage Select Bit 6
+</p>
+</li>
+<li>
+<p>
+118 = VSEL7: Voltage Select Bit 7
+</p>
+</li>
+<li>
+<p>
+119 = LVDS Fast switch mux
+</p>
+</li>
+<li>
+<p>
+120 = Fan Failsafe PWM: The functionality controls FAN fail safe PWM
+ generator. If function is present in VBIOS, GPIO should be configured as
+ normal output and initially asserted. Once RM is loaded and FAN control is
+ successfully initialized RM will dessert this pin to allow FAN_PWM control.
+</p>
+</li>
+<li>
+<p>
+121 = External Power Emergency: This GPIO provides an input to let SW know
+ when the GPU does not have enough power to initialize.
+</p>
+</li>
+<li>
+<p>
+122 = NVVDD PSI: The NVVDD Power State Indicator (PSI) signals the NVVDD
+ power supply controller to switch to reduced phase operation (typically 1 or
+ 2 phases) for efficiency in low power states.
+ Here are the logical states:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+ON state: Enable low power state (reduced phase operation)
+</p>
+</li>
+<li>
+<p>
+OFF state: Disable low power state (all phase operation)
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+123 = Fan with Overtemp: denotes that the pin will be driven from PWM source that has capability to MAX duty cycle based on the thermal ALERT signal, as opposed to the already present "Fan" function which only outputs PWM. This PWM source is independent from the pwm source for "Fan" function.
+</p>
+</li>
+<li>
+<p>
+124 = POSTed GPU LED to indicate the GPU that was POSTed by the SBIOS.
+</p>
+</li>
+<li>
+<p>
+125 = Reserved
+</p>
+</li>
+<li>
+<p>
+126 = Reserved
+</p>
+</li>
+<li>
+<p>
+127 = Reserved
+</p>
+</li>
+<li>
+<p>
+128 = SMPBI Event Notification: Notifies the EC (or client of the SMBus Post
+ Box Interface) of a pending GPU event requiring its attention.
+</p>
+</li>
+<li>
+<p>
+129 = PWM based serial VID voltage control.
+</p>
+</li>
+<li>
+<p>
+130 = Reserved
+</p>
+</li>
+<li>
+<p>
+131 = SLI Bridge LED Brightness - Allow SLI Bridge brightness adjustment via
+ PWM. (Must have PWM set when this is selected.)
+</p>
+</li>
+<li>
+<p>
+132 = Cover LOGO LED Brightness - Allow Cover LOGO brightness adjustment via
+ PWM. (Must have PWM set when this is selected.)
+</p>
+</li>
+<li>
+<p>
+133 = Panel Self Refresh Frame Lock A : This function is defined for
+ Self-Refresh Panel. The SR panel will send the frame-lock interrupt to GPU to
+ sync the raster frame signal.
+</p>
+</li>
+<li>
+<p>
+134 = FB Clamp: This function is used to monitor the FB clamp signal driven
+ by the Embedded Controller (EC) for JT memory self-refresh entry and exit.
+</p>
+</li>
+<li>
+<p>
+135 = FB Clamp Toggle Request: This function is used to request the Embedded
+ Controller (EC) to toggle the FB clamp signal.
+</p>
+</li>
+<li>
+<p>
+136 = Reserved
+</p>
+</li>
+<li>
+<p>
+137 = Reserved
+</p>
+</li>
+<li>
+<p>
+138 = LCD1 backlight: Backlight control. LCD1 corresponds to the LCD1 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+139 = LCD1 power: Panel Power control. LCD1 corresponds to the LCD1 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+140 = LCD1 Power Status: Panel Power status. LCD1 corresponds to the LCD1
+ defined in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+141 = LCD1 Self Test. LCD1 corresponds to the LCD1 defined in LCD ID field in
+ Connector Table.
+</p>
+</li>
+<li>
+<p>
+142 = LCD1 Lamp Status. LCD1 corresponds to the LCD1 defined in LCD ID field
+ in Connector Table.
+</p>
+</li>
+<li>
+<p>
+143 = LCD1 Brightness - Allow brightness adjustment via PWM. (Must have PWM
+ set when this is selected.). LCD1 corresponds to the LCD1 defined in LCD ID
+ field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+144 = LCD2 backlight: Backlight control. LCD2 corresponds to the LCD2 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+145 = LCD2 power: Panel Power control. LCD2 corresponds to the LCD2 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+146 = LCD2 Power Status: Panel Power status. LCD2 corresponds to the LCD2
+ defined in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+147 = LCD2 Self Test. LCD2 corresponds to the LCD2 defined in LCD ID field in
+</p>
+</li>
+<li>
+<p>
+Connector Table.
+</p>
+</li>
+<li>
+<p>
+148 = LCD2 Lamp Status. LCD2 corresponds to the LCD2 defined in LCD ID field
+ in Connector Table.
+</p>
+</li>
+<li>
+<p>
+149 = LCD2 Brightness - Allow brightness adjustment via PWM. (Must have PWM
+ set when this is selected.). LCD2 corresponds to the LCD2 defined in LCD ID
+ field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+150 = LCD3 backlight: Backlight control. LCD3 corresponds to the LCD3 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+151 = LCD3 power: Panel Power control. LCD3 corresponds to the LCD3 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+152 = LCD3 Power Status: Panel Power status. LCD3 corresponds to the LCD3
+ defined in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+153 = LCD3 Self Test. LCD3 corresponds to the LCD3 defined in LCD ID field in
+ Connector Table.
+</p>
+</li>
+<li>
+<p>
+154 = LCD3 Lamp Status. LCD3 corresponds to the LCD3 defined in LCD ID field
+ in Connector Table.
+</p>
+</li>
+<li>
+<p>
+155 = LCD3 Brightness - Allow brightness adjustment via PWM. (Must have PWM
+ set when this is selected.). LCD3 corresponds to the LCD3 defined in LCD ID
+ field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+156 = LCD4 backlight: Backlight control. LCD4 corresponds to the LCD4 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+157 = LCD4 power: Panel Power control. LCD4 corresponds to the LCD4 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+158 = LCD4 Power Status: Panel Power status. LCD4 corresponds to the LCD4
+ defined in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+159 = LCD4 Self Test. LCD4 corresponds to the LCD4 defined in LCD ID field in
+ Connector Table.
+</p>
+</li>
+<li>
+<p>
+160 = LCD4 Lamp Status. LCD4 corresponds to the LCD4 defined in LCD ID field
+ in Connector Table.
+</p>
+</li>
+<li>
+<p>
+161 = LCD4 Brightness - Allow brightness adjustment via PWM. (Must have PWM
+ set when this is selected.). LCD4 corresponds to the LCD4 defined in LCD ID
+ field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+162 = LCD5 backlight: Backlight control. LCD5 corresponds to the LCD5 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+163 = LCD5 power: Panel Power control. LCD5 corresponds to the LCD5 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+164 = LCD5 Power Status: Panel Power status. LCD5 corresponds to the LCD5
+ defined in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+165 = LCD5 Self Test. LCD5 corresponds to the LCD5 defined in LCD ID field in
+ Connector Table.
+</p>
+</li>
+<li>
+<p>
+166 = LCD5 Lamp Status. LCD5 corresponds to the LCD5 defined in LCD ID field
+ in Connector Table.
+</p>
+</li>
+<li>
+<p>
+167 = LCD5 Brightness - Allow brightness adjustment via PWM. (Must have PWM
+ set when this is selected.). LCD5 corresponds to the LCD5 defined in LCD ID
+ field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+168 = LCD6 backlight: Backlight control. LCD6 corresponds to the LCD6 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+169 = LCD6 power: Panel Power control. LCD6 corresponds to the LCD6 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+170 = LCD6 Power Status: Panel Power status. LCD6 corresponds to the LCD6
+ defined in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+171 = LCD6 Self Test. LCD6 corresponds to the LCD6 defined in LCD ID field in
+ Connector Table.
+</p>
+</li>
+<li>
+<p>
+172 = LCD6 Lamp Status. LCD6 corresponds to the LCD6 defined in LCD ID field
+ in Connector Table.
+</p>
+</li>
+<li>
+<p>
+173 = LCD6 Brightness - Allow brightness adjustment via PWM. (Must have PWM
+ set when this is selected.). LCD6 corresponds to the LCD6 defined in LCD ID
+ field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+174 = LCD7 backlight: Backlight control. LCD7 corresponds to the LCD7 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+175 = LCD7 power: Panel Power control. LCD7 corresponds to the LCD7 defined
+ in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+176 = LCD7 Power Status: Panel Power status. LCD7 corresponds to the LCD7
+ defined in LCD ID field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+177 = LCD7 Self Test. LCD7 corresponds to the LCD7 defined in LCD ID field in
+ Connector Table.
+</p>
+</li>
+<li>
+<p>
+178 = LCD7 Lamp Status. LCD7 corresponds to the LCD7 defined in LCD ID field
+ in Connector Table.
+</p>
+</li>
+<li>
+<p>
+179 = LCD7 Brightness - Allow brightness adjustment via PWM. (Must have PWM
+ set when this is selected.). LCD7 corresponds to the LCD7 defined in LCD ID
+ field in Connector Table.
+</p>
+</li>
+<li>
+<p>
+180 = Reserved
+</p>
+</li>
+<li>
+<p>
+255 = 0xFF = Skip Entry. This allows for quick removal of an entry from the
+ GPIO Assignment table.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Output HW select (23:16)</div><p>This field specifies <em>HW Select</em> value which has to be directly written
+by software into the OUTPUT register field for deciding which output HW
+function/enumerant will drive the PIN.</p></div>
+<div class="paragraph"><p>Values as specified in class20x HW manual</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x00 = SEL_NORMAL
+</p>
+</li>
+<li>
+<p>
+0x40 = SEL_RASTER_SYNC_0
+</p>
+</li>
+<li>
+<p>
+0x41 = SEL_RASTER_SYNC_1
+</p>
+</li>
+<li>
+<p>
+0x42 = SEL_RASTER_SYNC_2
+</p>
+</li>
+<li>
+<p>
+0x43 = SEL_RASTER_SYNC_3
+</p>
+</li>
+<li>
+<p>
+0x48 = SEL_STEREO_0
+</p>
+</li>
+<li>
+<p>
+0x49 = SEL_STEREO_1
+</p>
+</li>
+<li>
+<p>
+0x4A = SEL_STEREO_2
+</p>
+</li>
+<li>
+<p>
+0x4B = SEL_STEREO_3
+</p>
+</li>
+<li>
+<p>
+0x50 = SEL_SWAP_READY_OUT_0
+</p>
+</li>
+<li>
+<p>
+0x51 = SEL_SWAP_READY_OUT_1
+</p>
+</li>
+<li>
+<p>
+0x52 = SEL_SWAP_READY_OUT_2
+</p>
+</li>
+<li>
+<p>
+0x53 = SEL_SWAP_READY_OUT_3
+</p>
+</li>
+<li>
+<p>
+0x58 = SEL_THERMAL_OVERT
+</p>
+</li>
+<li>
+<p>
+0x59 = SEL_FAN_ALERT
+</p>
+</li>
+<li>
+<p>
+0x5A = SEL_THERMAL_LOAD_STEP_0
+</p>
+</li>
+<li>
+<p>
+0x5B = SEL_THERMAL_LOAD_STEP_1
+</p>
+</li>
+<li>
+<p>
+0x5C = SEL_PWM_OUTPUT
+</p>
+</li>
+<li>
+<p>
+0x80 = SEL_SOR0_TMDS_OUT_PWM
+</p>
+</li>
+<li>
+<p>
+0x81 = SEL_SOR0_TMDS_OUT_PINA
+</p>
+</li>
+<li>
+<p>
+0x82 = SEL_SOR0_TMDS_OUT_PINB
+</p>
+</li>
+<li>
+<p>
+0x84 = SEL_SOR1_TMDS_OUT_PWM
+</p>
+</li>
+<li>
+<p>
+0x85 = SEL_SOR1_TMDS_OUT_PINA
+</p>
+</li>
+<li>
+<p>
+0x86 = SEL_SOR1_TMDS_OUT_PINB
+</p>
+</li>
+<li>
+<p>
+0x88 = SEL_SOR2_TMDS_OUT_PWM
+</p>
+</li>
+<li>
+<p>
+0x89 = SEL_SOR2_TMDS_OUT_PINA
+</p>
+</li>
+<li>
+<p>
+0x8A = SEL_SOR2_TMDS_OUT_PINB
+</p>
+</li>
+<li>
+<p>
+0x8C = SEL_SOR3_TMDS_OUT_PWM
+</p>
+</li>
+<li>
+<p>
+0x8D = SEL_SOR3_TMDS_OUT_PINA
+</p>
+</li>
+<li>
+<p>
+0x8E = SEL_SOR3_TMDS_OUT_PINB
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Input HW select (28:24)</div><p>This field specifies the input HW function <em>number</em> which needs to be
+routed to the given pin (given by GPIO Number) which is also equivalent
+to the index of the INPUT_CNTL register that needs to be programmed.</p></div>
+<div class="paragraph"><p>Right now the manual specifies space for 24 functions(1-24) which are
+given below. Note that 0 is not a valid input function in HW and is used
+only to specify that no input function needs to be programmed on the
+given pin.</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+00 / 0x00 = No Input function needs to be programmed on the given pin. Note that 0 is not a valid input value in HW.
+</p>
+</li>
+<li>
+<p>
+01 / 0x01 = NV_PMGR_GPIO_INPUT_FUNC_AUX_HPD(0)
+</p>
+</li>
+<li>
+<p>
+02 / 0x02 = NV_PMGR_GPIO_INPUT_FUNC_AUX_HPD(1)
+</p>
+</li>
+<li>
+<p>
+03 / 0x03 = NV_PMGR_GPIO_INPUT_FUNC_AUX_HPD(2)
+</p>
+</li>
+<li>
+<p>
+04 / 0x04 = NV_PMGR_GPIO_INPUT_FUNC_AUX_HPD(3)
+</p>
+</li>
+<li>
+<p>
+09 / 0x09 = NV_PMGR_GPIO_INPUT_FUNC_RASTER_SYNC(0)
+</p>
+</li>
+<li>
+<p>
+10 / 0x0A = NV_PMGR_GPIO_INPUT_FUNC_RASTER_SYNC(1)
+</p>
+</li>
+<li>
+<p>
+11 / 0x0B = NV_PMGR_GPIO_INPUT_FUNC_RASTER_SYNC(2)
+</p>
+</li>
+<li>
+<p>
+12 / 0x0C = NV_PMGR_GPIO_INPUT_FUNC_RASTER_SYNC(3)
+</p>
+</li>
+<li>
+<p>
+17 / 0x11 = NV_PMGR_GPIO_INPUT_FUNC_SWAP_READY(0)
+</p>
+</li>
+<li>
+<p>
+18 / 0x12 = NV_PMGR_GPIO_INPUT_FUNC_SWAP_READY(1)
+</p>
+</li>
+<li>
+<p>
+21 / 0x15 = NV_PMGR_GPIO_INPUT_FUNC_THERMAL_OVERTEMP
+</p>
+</li>
+<li>
+<p>
+22 / 0x16 = NV_PMGR_GPIO_INPUT_FUNC_THERMAL_ALERT
+</p>
+</li>
+<li>
+<p>
+23 / 0x17 = NV_PMGR_GPIO_INPUT_FUNC_POWER_ALERT
+</p>
+</li>
+<li>
+<p>
+24 / 0x18 = NV_PMGR_GPIO_INPUT_FUNC_TACH
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">GSYNC Header (29:29)</div><p>GSYNC Header Connection. Possible values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 - Not Connected
+</p>
+</li>
+<li>
+<p>
+1 - Connected
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>RM is responsible for discerning Raster Sync or Flip Lock from the GPIO
+Function.</p></div>
+<div class="paragraph"><div class="title">Pulse Width Modulate (PWM)</div><p>If this bit is 1, then this GPIO is used with PWM.</p></div>
+<div class="paragraph"><div class="title">Lock Pin Number (35:32)</div><p>The lock pin number associated with this entry. In ISO designs there are
+currently four lock pins that are either assigned to GPIO pins or
+internal dedicated pins. This only applies to a subset of GPIO
+functions. Depending on the chip, some lock pins are done with real
+GPIO&#8217;s so they have a real GPIO number and the I/O Type Field is set to
+NV_GPIO_IO_TYPE_GPIO, while other lock pins do not have a real GPIO so
+they are set to NV_GPIO_IO_TYPE_DEDICATED_LOCK_PIN and the GPIO number
+is meaningless (but is always set to zero). This field must be 0xF for
+GPIO functions that do not involve a lock pin.</p></div>
+<div class="paragraph"><div class="title">Off Data (FT) (36:36)</div><p>This field determines in what physcial data output must be present on the
+GPIO pin to indicate the logical OFF signal. If this bit is 0, then the
+software will set the GPIO pin to 0 when it wants to turn the function
+off.</p></div>
+<div class="paragraph"><div class="title">Off Enable (FE) (37:37)</div><p>This field determines in which physical direction the GPIO should be placed
+when requesting the logical function to be OFF. If this bit is 0, then
+the GPIO will be set as an Output when OFF is requested. If this bit is
+a 1, then the GPIO will be set as an Input when OFF is requested.</p></div>
+<div class="paragraph"><div class="title">On Data (OT) (38:38)</div><p>This field determines what physical data output must be present on the
+GPIO pin to indicate the logical ON signal. If this bit is 0, then the
+software will set the GPIO pin to 0 when it wants to turn the function
+on.</p></div>
+<div class="paragraph"><div class="title">On Enable (OE) (39:39)</div><p>This field determines in which physical direction the GPIO should be placed
+when requesting the logical function to be ON. If this bit is 0, then
+the GPIO will be set as an Output when ON is requested. If this bit is
+a 1, then the GPIO will be set as an Input when ON is requested.</p></div>
+<div class="openblock">
+<div class="content">
+<div class="paragraph"><p>Note:</p></div>
+<div class="paragraph"><p>Some GPIOs have some overloading with HW Slowdown features and the
+detected presence of a thermal chip.
+HW Slowdown consists of two parts:</p></div>
+<div class="olist loweralpha"><ol class="loweralpha">
+<li>
+<p>
+Enabling/Disabling the functionality through GPIO 8. (Note, this
+ functionality is only available on NV18 and NV30+ chips.)
+</p>
+</li>
+<li>
+<p>
+Triggering GPIO 8 when the functionality is enabled. The trigger can
+ come from a thermal device, external power connector, some logic on the
+ board, a combination of the above, etc. The trigger method is what the GPIO
+ function should define, but by defining it, we understand that we must
+ enable HW slowdown (A) as well.
+</p>
+</li>
+</ol></div>
+<div class="paragraph"><p>Trigger or Assert implies that the GPIO 8 is brought LOW and since the
+functionality is enabled (A), the HW Clocks are reduced by 2x, 4x or
+8x. The opposite of trigger/assert is deassert.</p></div>
+<div class="paragraph"><p>In most cases today, HW Slowdown is set to ACTIVE LOW due to the ACTIVE
+LOW signal from the thermal chips. We can program GPIO 8 based HW
+Slowdown to be ACTIVE HIGH, but then the trigger level for the line
+routed to GPIO 8 must follow the ACTIVE HIGH signaling.</p></div>
+<div class="paragraph"><p>Here is a list of all the different GPIO functions and their meaning in
+relationship to the above:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+16 = Thermal and External Power Detect: If attached to GPIO 8, assumes
+ HW Slowdown enabled (A). If thermal device is not found, HW Slowdown is
+ disabled (A). Here&#8217;s a logical diagram of this connection:
+ <span class="image">
+<img src="ThermalPower.gif" alt="Thermal GPIO and Power routing" />
+</span>
+</p>
+</li>
+<li>
+<p>
+17 = Thermal Event Detect: Same as above, but without the Power
+ Connected signal. Specifically, the Thermal ASSERT is routed directly to
+ GPIO 8.
+</p>
+</li>
+<li>
+<p>
+34 = Required Power Sense: This version is similar to Thermal and
+ External Power Detect, but without the Thermal ASSERT signal. Specifically,
+ the Power Connected signal is routed directly to GPIO 8. The intention of
+ the SW is to disable HW Slowdown (A) with this function.
+</p>
+</li>
+<li>
+<p>
+39 = Optional Power Sense: Same as Required Power Sense with regards to
+ HW Slowdown.
+</p>
+</li>
+<li>
+<p>
+42 = SW Performance Level Slowdown: This GPIO function will act as a trigger
+ point for the SW to lower the clocks. HW Slowdown (A) is not enabled.
+</p>
+</li>
+<li>
+<p>
+43 = HW Slowdown Enable: This function strictly allows for an undefined
+ trigger point to cause HW Slowdown. There is no requirement to have a
+ thermal device present in order to use HW Slowdown as in the functions
+ Thermal and External Power Detect (16) and Thermal Event Detect (17).
+</p>
+</li>
+<li>
+<p>
+44 = Disable Power Sense. If asserted, this GPIO will remove the
+ power sense circuit from affecting HW Slowdown. Note that HW Slowdown
+ enable/disable (A) is not affected by the usage of this functionality. This
+ function exists only to change the trigger method (B) for HW Slowdown. Here&#8217;s
+ a logical diagram of this connection:
+ <span class="image">
+<img src="ThermalPowerDisable.gif" alt="Thermal GPIO and Power with Disable routing" />
+</span>
+</p>
+</li>
+<li>
+<p>
+52 = Thermal Alert and 53 = Thermal Critical. Although we have other thermal
+ inputs that are tied to GPIO8, these can be assigned to any GPIO, and can
+ cover many different situations.
+</p>
+</li>
+<li>
+<p>
+79 = The Analogix Encoder implements clock stretching in a manner that our SW
+ emulated I2C cannot properly handle. To workaround this issue, a keeper
+ circuit is added to detect slave issued stretches on the SCL and hold the SCL
+ line. This allows our GPU to properly communicate with the Analogix chip.
+ The keeper circuit is turned on and off at specific points during the I2C
+ transaction.
+</p>
+</li>
+</ul></div>
+</div></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">The presence of the GSYNC header can be positively determined by (1 ==
+GSYNCRasterSync) for any non-skip entry or (1 == GSYNCFlipLock) for any
+non-skip entry.</td>
+</tr></table>
+</div>
+<div class="sect3">
+<h4 id="_lock_pins">Lock Pins</h4>
+<div class="paragraph"><p>There is a subset of GPIO functions that are "lock pins".
+In the case of an entry that has one of these lock pin GPIO functions,
+the Lock Pin Number Field tells which lock pin the functionality is
+mapped to.</p></div>
+<div class="paragraph"><p>Depending on the chip, some lock pins are done with real GPIOs so they
+have a real GPIO number and the I/O Type Field is set to
+NV_GPIO_IO_TYPE_GPIO, while other lock pins do not have a real GPIO so
+they are set to NV_GPIO_IO_TYPE_DEDICATED_LOCK_PIN and the GPIO number
+is meaningless (but is always set to zero).</p></div>
+<div class="paragraph"><p>Lockpins can be thought of as IO interface to the display HW.
+For example; a head/rg can be programmed to be connected to a
+lockpin. The lockpin can interface with GPIOs on the other side.</p></div>
+<div class="paragraph"><p><span class="image">
+<img src="Stall_lock_dcb.jpg" alt="Stall lock pin configuration" />
+</span></p></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_external_gpio_assignment_master_table">External GPIO Assignment Master Table</h3>
+<div class="paragraph"><p>Some boards require extra control, since we don&#8217;t have enough internal
+GPIO pins to manage them. The board designers add an external chip
+that is used to control more GPIO pins on the board. Because we expect
+that there could be more than just one external GPIO controller on the
+board, we have separated the tables into Master and Specific. The Master
+table lists pointers to all the different external GPIO controllers on
+the board. The Specific Table lists the data associated with one
+controller on the board. A pointer to the External GPIO Assignment
+Master Table is found in the GPIO Assignment Table Header.</p></div>
+<div class="paragraph"><p>The Master Table is made up of two parts: the Header and the Entries. The
+Entries follow immediately after the Header.</p></div>
+<div class="sect3">
+<h4 id="_external_gpio_assignment_master_table_header">External GPIO Assignment Master Table Header</h4>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Size = 2</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Count</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Header Size = 4</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Version = 0x40</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Version</div><p>Version number of the GPIO Assignment Master Table Header and Entries. The
+GPIO Assignment Master Table version will start with 4.0, or a value
+of 0x40, in this field. If this version is 0, then the driver will
+assume that this table is invalid.</p></div>
+<div class="paragraph"><div class="title">Header Size</div><p>Size of the GPIO Assignment Master Table Header in bytes. Initially,
+this is 4 bytes.</p></div>
+<div class="paragraph"><div class="title">Entry Count</div><p>Number of GPIO Assignment Table Entries starting directly after the end
+of this header.</p></div>
+<div class="paragraph"><div class="title">Entry Size</div><p>Size of each Master Table Entry in bytes. Initially, this is 2 bytes.</p></div>
+</div>
+<div class="sect3">
+<h4 id="_external_gpio_assignment_master_table_entry">External GPIO Assignment Master Table Entry</h4>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="83%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">External GPIO Assignment Specific Table Pointer</p></td>
+<td align="left" valign="top"><p class="table">16</p></td>
+<td align="left" valign="top"><p class="table">Pointer to an External GPIO Assignment Specific Table. A value of 0
+here means <em>skip entry</em>.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_external_gpio_assignment_specific_table">External GPIO Assignment Specific Table</h3>
+<div class="paragraph"><p>The Specific Table is made up of two parts, the Header and the Entries.
+The Entries follow immediately after the Header.</p></div>
+<div class="sect3">
+<h4 id="_external_gpio_assignment_specific_table_header">External GPIO Assignment Specific Table Header</h4>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Size = 4</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Count</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Header Size = 7</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Version = 0x40</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="60%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<col width="4%" />
+<thead>
+<tr>
+<th align="center" valign="top">55</th>
+<th align="center" valign="top">54</th>
+<th align="center" valign="top">53</th>
+<th align="center" valign="top">52</th>
+<th align="center" valign="top">51</th>
+<th align="center" valign="top">50</th>
+<th align="center" valign="top">49</th>
+<th align="center" valign="top">48</th>
+<th align="center" valign="top">47</th>
+<th align="center" valign="top">46</th>
+<th align="center" valign="top">45</th>
+<th align="center" valign="top">44</th>
+<th align="center" valign="top">43</th>
+<th align="center" valign="top">42</th>
+<th align="center" valign="top">41</th>
+<th align="center" valign="top">40</th>
+<th align="center" valign="top">39</th>
+<th align="center" valign="top">38</th>
+<th align="center" valign="top">37</th>
+<th align="center" valign="top">36</th>
+<th align="center" valign="top">35</th>
+<th align="center" valign="top">34</th>
+<th align="center" valign="top">33</th>
+<th align="center" valign="top">32</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="3" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="center" valign="top"><p class="table">P</p></td>
+<td colspan="2" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td colspan="2" align="center" valign="top"><p class="table">xInt</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">I2C Address</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">External Type</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Version</div><p>Version number of the GPIO Assignment Specific Table Header and Entries. The
+GPIO Assignment Master Table will version will start with 4.0, or a value
+of 0x40, in this field. If this version is 0, then the driver will
+assume that this table is invalid.</p></div>
+<div class="paragraph"><div class="title">Header Size</div><p>Size of the GPIO Assignment Specific Table Header in bytes. Initially,
+this is 7 bytes.</p></div>
+<div class="paragraph"><div class="title">Entry Count</div><p>Number of GPIO Assignment Specific Table Entries starting directly after the
+end of this table.</p></div>
+<div class="paragraph"><div class="title">Entry Size</div><p>Size of each Specific Table Entry in bytes. Initially, this is 4 bytes.</p></div>
+<div class="paragraph"><div class="title">External Type</div><p>The actual chip used to control the GPIO pins. Possible values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0: Unknown - Used to signify to skip an entire Specific Table.
+</p>
+</li>
+<li>
+<p>
+1: PCA9555 for 10-pin Personal Cinema VIVO pods
+</p>
+</li>
+<li>
+<p>
+2: ADT7473 Automatic Fan Controller Chip
+</p>
+</li>
+<li>
+<p>
+3: CX25875 General Purpose Output pins
+</p>
+</li>
+<li>
+<p>
+4: PCA9555 for GPIO pins on MXM external HDMI control
+</p>
+</li>
+<li>
+<p>
+5: PCA9536 for GPIO pins for HDMI/DVI Multiplexing
+</p>
+</li>
+<li>
+<p>
+6: PCA9555 for GPIOs
+</p>
+</li>
+<li>
+<p>
+7: PCA9536 for GPIOs
+</p>
+</li>
+<li>
+<p>
+8: PCA9555 for Napoleon
+</p>
+</li>
+<li>
+<p>
+9: ANX9805 for GPIOs
+</p>
+</li>
+<li>
+<p>
+A: Pic18f24k20 GPIO expander
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">I2C Address</div><p>7-bit I2C communication Address left shifted to bits 7:1, with a 0 in
+bit 0. This is the standard I2C address specification for SW.</p></div>
+<div class="paragraph"><div class="title">External Device Interrupt Number (xInt)</div><p>This field gives the number of the external interrupt pin that is used
+to signal interrupt requests by this device. Possible values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0: No interrupts will be generated by this device
+</p>
+</li>
+<li>
+<p>
+1: The function "GPIO Expansion 1 Interrupt" from the GPIO Assignment table
+ will signal interrupts for this device
+</p>
+</li>
+<li>
+<p>
+2: reserved for future use
+</p>
+</li>
+<li>
+<p>
+3: reserved for future use
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">External Communications Port (P)</div><p>This field defines which communications port is used for this device.
+See the I2C Control Block Header for the listing of the Primary and
+Secondary Communication ports.</p></div>
+</div>
+<div class="sect3">
+<h4 id="_external_gpio_assignment_specific_table_entry">External GPIO Assignment Specific Table Entry</h4>
+<div class="paragraph"><p>Each entry here is defined exactly like the internal GPIO Entries. The
+only differences are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+The GPIO number associated here. If the External GPIO labels its
+GPIOs with numbers, we will use their number labels for the GPIO
+number here. If the external chip does not label with numbers, but
+labels them like "GPIO ABC", then we&#8217;ll use the GPIO pin that is
+closest to pin 0 of the part as GPIO 0.
+</p>
+</li>
+<li>
+<p>
+The GPIO functions associated here. All functions must be explicitly
+defined for any given External Type. They can be defined exactly like
+the internal internal GPIO Entries, but it must be explicitly defined
+that way. A complete list of function code definitions for each
+defined External Type will be added to this document, as they are
+defined.
+</p>
+</li>
+<li>
+<p>
+The SKIP ENTRY is defined by the value 0 for all External GPIO
+Types instead of 63.
+</p>
+</li>
+</ul></div>
+</div>
+<div class="sect3">
+<h4 id="_gpio_entries_for_external_type_1_pca9555_for_10_pin_personal_cinema_vivo_pods">GPIO Entries for External Type 1 - PCA9555 for 10-pin Personal Cinema VIVO pods</h4>
+<div class="paragraph"><p>For this particular External Type ("1: PCA9555 for 10-pin Personal
+Cinema VIVO pods") there is a physical limit of 16 GPIO pins.</p></div>
+<div class="paragraph"><p>Here are the functions as listed for External Type 1</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = SKIP ENTRY: This allows for quick removal of an entry from the GPIO Assignment table.
+</p>
+</li>
+<li>
+<p>
+1 = DTERM_LINE1A: used to control Japanese HDTV sets.
+</p>
+</li>
+<li>
+<p>
+2 = CONFIG_480p576p: indicates whether the user desires 480p/576p support
+</p>
+</li>
+<li>
+<p>
+3 = DTERM_LINE1B: used to control Japanese HDTV sets.
+</p>
+</li>
+<li>
+<p>
+4 = CONFIG_720p: indicates whether the user desires 720p support
+</p>
+</li>
+<li>
+<p>
+5 = DTERM_LINE2A: used to control Japanese HDTV sets.
+</p>
+</li>
+<li>
+<p>
+6 = CONFIG_1080i: indicates whether the user desires 1080i support
+</p>
+</li>
+<li>
+<p>
+7 = DTERM_LINE2B: used to control Japanese HDTV sets.
+</p>
+</li>
+<li>
+<p>
+8 = DTERM_LINE3A: used to control Japanese HDTV sets.
+</p>
+</li>
+<li>
+<p>
+9 = POD_LOAD_DET: used to detect connections to SDTV connectors
+</p>
+</li>
+<li>
+<p>
+10 = DTERM_LINE3B: used to control Japanese HDTV sets.
+</p>
+</li>
+<li>
+<p>
+11 = POD_SEL_2ND_DEV: used to activate SDTV connectors
+</p>
+</li>
+<li>
+<p>
+12 = DTERM_SENSE: used to detect connections to Japanese HDTV connectors
+</p>
+</li>
+<li>
+<p>
+13 = CONFIG_SDTV_NOT_COMPONENT:: indicates whether the user prefers SDTV or component output as the boot default.
+</p>
+</li>
+<li>
+<p>
+14 = POD_LOCALE_BIT0: used to indicate the geopolitical locale of the POD design. See interpretation below.
+</p>
+</li>
+<li>
+<p>
+15 = POD_LOCALE_BIT1: used to indicate the geopolitical locale of the POD design. See interpretation below.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>The locale bits are interpreted with this table</p></div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="33%" />
+<col width="33%" />
+<col width="33%" />
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">North America YPrPb POD</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">Japanese D-Connector POD</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">European SCART with RGB POD</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_gpio_entries_for_external_type_2_adt7473_automatic_fan_controller_chip">GPIO Entries for External Type 2 - ADT7473 Automatic Fan Controller Chip</h4>
+<div class="paragraph"><p>Currently, there will be only one GPIO defined for this chip.</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = SKIP ENTRY: This allows for quick removal of an entry from the GPIO Assignment table.
+</p>
+</li>
+<li>
+<p>
+1 = FANCONTROL: This GPIO will provide on, off, or on with PWM control. In
+ addition, when set as an input, the fan controller will switch to automatic
+ temperature-based fan control.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>There are 3 physical fan controllers on this chip. To reference any of these,
+use the GPIO Number to differentiate each controller.</p></div>
+</div>
+<div class="sect3">
+<h4 id="_gpio_entries_for_external_type_3_cx25875_general_purpose_output_pins">GPIO Entries for External Type 3 - CX25875 General Purpose Output pins</h4>
+<div class="paragraph"><p>There are 3 physical GPIO pins on this chip. Additional GPIO
+functionality may be added in a future revision.</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = SKIP ENTRY: This allows for quick removal of an entry from the GPIO Assignment table.
+</p>
+</li>
+<li>
+<p>
+1 = SCART_RGB: Used to control the TV output as Composite (low) or RGB format (high).
+</p>
+</li>
+<li>
+<p>
+2 = SCART_VIDEO_ASPECT: used to control ouput picture as 16x9 (low) or 4x3 (high).
+</p>
+</li>
+</ul></div>
+</div>
+<div class="sect3">
+<h4 id="_gpio_entries_for_external_type_4_pca9555_for_gpio_pins_on_mxm_external_hdmi">GPIO Entries for External Type 4 - PCA9555 for GPIO pins on MXM external HDMI</h4>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = SKIP ENTRY: This allows for quick removal of an entry from the GPIO Assignment table.
+</p>
+</li>
+<li>
+<p>
+1 = Digital Encoder Interrupt Enable: used to control I2C CLK line for SI1930 firmware update.
+</p>
+</li>
+<li>
+<p>
+2 = si1930uC Programming: used to control SI1930 firmware update.
+</p>
+</li>
+<li>
+<p>
+3 = si1930uC Reset: used to control reset signal of SI1930 uC.
+</p>
+</li>
+</ul></div>
+</div>
+<div class="sect3">
+<h4 id="_gpio_entries_for_external_type_5_pca9536_for_gpio_pins_for_hdmi_dvi_multiplexing">GPIO Entries for External Type 5 - PCA9536 for GPIO pins for HDMI/DVI Multiplexing</h4>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = SKIP ENTRY: This allows for quick removal of an entry from the GPIO Assignment table.
+</p>
+</li>
+<li>
+<p>
+1 = DVI/HDMI Select: controls whether the display data is routed to the DVI
+ device or to the HDMI device.
+</p>
+</li>
+<li>
+<p>
+2 = I2C HDMI Enable: enables or disables the I2C bus for the HDMI device.
+</p>
+</li>
+<li>
+<p>
+3 = I2C DVI Enable: enables or disables the I2C bus for the DVI device.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Note that HDMI and DVI enable are mutually exclusive and may never be
+asserted at the same time. See table below for additional information.</p></div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="25%" />
+<col width="25%" />
+<col width="25%" />
+<col width="25%" />
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table"></p></td>
+<td align="left" valign="top"><p class="table">DVI/HDMI Select</p></td>
+<td align="left" valign="top"><p class="table">I2C HDMI Enable</p></td>
+<td align="left" valign="top"><p class="table">I2C DVI Enable</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">DVI-Mode</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">HDMI-Mode</p></td>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">0</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_gpio_entries_for_external_type_6_and_7_pca9555_and_pca9536_for_gpios">GPIO Entries for External Type 6 and 7 - PCA9555 and PCA9536 for GPIOs</h4>
+<div class="paragraph"><p>This define was originally defined to support MXM, but has more general
+applicability.</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = SKIP ENTRY: This allows for quick removal of an entry from the GPIO Assignment table.
+</p>
+</li>
+<li>
+<p>
+1 = Output Device Control: Used for DDC Bus Expander or Mux control (Switched Outputs)
+</p>
+</li>
+<li>
+<p>
+5 = Japanese D connector line 1
+</p>
+</li>
+<li>
+<p>
+6 = Japanese D connector line 2
+</p>
+</li>
+<li>
+<p>
+7 = Japanese D connector line 3
+</p>
+</li>
+<li>
+<p>
+8 = Japanese D connector plug insertion detect
+</p>
+</li>
+<li>
+<p>
+9 = Japanese D connector spare line 1
+</p>
+</li>
+<li>
+<p>
+10 = Japanese D connector spare line 2
+</p>
+</li>
+<li>
+<p>
+11 = Japanese D connector spare line 3
+</p>
+</li>
+<li>
+<p>
+12 = VSEL0: Voltage Select Bit 0
+</p>
+</li>
+<li>
+<p>
+13 = VSEL1: Voltage Select Bit 1
+</p>
+</li>
+<li>
+<p>
+14 = VSEL2: Voltage Select Bit 2
+</p>
+</li>
+<li>
+<p>
+15 = VSEL3: Voltage Select Bit 3
+</p>
+</li>
+<li>
+<p>
+16 = VSEL4: Voltage Select Bit 4
+</p>
+</li>
+<li>
+<p>
+17 = VSEL5: Voltage Select Bit 5
+</p>
+</li>
+<li>
+<p>
+18 = VSEL6: Voltage Select Bit 6
+</p>
+</li>
+<li>
+<p>
+19 = VSEL7: Voltage Select Bit 7
+</p>
+</li>
+<li>
+<p>
+31 = LCD Self Test
+</p>
+</li>
+<li>
+<p>
+32 = LCD Lamp Status
+</p>
+</li>
+<li>
+<p>
+36 = HDTV Select: Allows selection of lines driven between SDTV (OFF state) and HDTV (ON state)
+</p>
+</li>
+<li>
+<p>
+37 = HDTV Alt-Detect: Allows detection of the connectors that are not
+ selected by HDTV Select. That is, if HDTV Select is currently selecting SDTV,
+ then this GPIO would allow us detect the presence of the HDTV connection.
+</p>
+</li>
+</ul></div>
+</div>
+<div class="sect3">
+<h4 id="_gpio_entries_for_external_type_8_pca9555_for_s_pdif_detect_and_tv_resolution_leds">GPIO Entries for External Type 8 - PCA9555 for S/PDif Detect and TV resolution LEDs</h4>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = SKIP ENTRY: This allows for quick removal of an entry from the GPIO Assignment table.
+</p>
+</li>
+<li>
+<p>
+1 = LED for 480/576i (Output)
+</p>
+</li>
+<li>
+<p>
+2 = LED for 480/576p (Output)
+</p>
+</li>
+<li>
+<p>
+3 = LED for 720p (Output)
+</p>
+</li>
+<li>
+<p>
+4 = LED for 1080i (Output)
+</p>
+</li>
+<li>
+<p>
+5 = LED for 1080p (Output)
+</p>
+</li>
+<li>
+<p>
+6 = HDAudio Signal Detect (Input)
+</p>
+</li>
+<li>
+<p>
+7 = S/PDif 0 (Coax) Signal Detect (Input)
+</p>
+</li>
+<li>
+<p>
+8 = S/PDif 1 (Header) Signal Detect (Input)
+</p>
+</li>
+<li>
+<p>
+9 = S/PDif Input Select - 0. Coax, 1. Header (Output)
+</p>
+</li>
+<li>
+<p>
+10 = Panic Button - Resets screen resolution to the lowest possible setting (Input)
+</p>
+</li>
+<li>
+<p>
+11 = Resolution Change Button - Changes the screen resolution to its next highest setting (Input)
+</p>
+</li>
+</ul></div>
+</div>
+<div class="sect3">
+<h4 id="_gpio_entries_for_external_type_9_anx9805_external_dp_encoder_gpio">GPIO Entries for External Type 9 - ANX9805 External DP Encoder GPIO</h4>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = SKIP ENTRY: This allows for quick removal of an entry from the GPIO Assignment table.
+</p>
+</li>
+<li>
+<p>
+1 = DP2DVI Dongle A: This GPIO is used to detect DP2DVI dongle&#8217;s presence
+ (input) and is associated with the Connector Table&#8217;s DP2DVI A bit.
+</p>
+</li>
+<li>
+<p>
+2 = DP2DVI Dongle B: This GPIO is used to detect DP2DVI dongle&#8217;s presence
+ (input) and is associated with the Connector Table&#8217;s DP2DVI B bit.
+</p>
+</li>
+<li>
+<p>
+3 = DP2DVI Dongle C: This GPIO is used to detect DP2DVI dongle&#8217;s presence
+ (input) and is associated with the Connector Table&#8217;s DP2DVI C bit.
+</p>
+</li>
+<li>
+<p>
+4 = DP2DVI Dongle D: This GPIO is used to detect DP2DVI dongle&#8217;s presence
+ (input) and is associated with the Connector Table&#8217;s DP2DVI D bit.
+</p>
+</li>
+</ul></div>
+</div>
+<div class="sect3">
+<h4 id="_gpio_entries_for_external_type_a_pic18f24k20_gpio_expander_for_p678_668">GPIO Entries for External Type A Pic18f24k20 GPIO expander for P678/668</h4>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = SKIP ENTRY: This allows for quick removal of an entry from the GPIO Assignment table.
+</p>
+</li>
+<li>
+<p>
+1 = Output Device Control: Used for DDC Bus Expander or Mux control (Switched Outputs).
+</p>
+</li>
+</ul></div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_spread_spectrum_table">Spread Spectrum Table</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>This table is not required in the ROM. This table only needs to be
+defined if the specific board requires spread spectrum. This table will
+be used by both the VBIOS and the driver.</p></div>
+<div class="sect2">
+<h3 id="_spread_spectrum_table_header">Spread Spectrum Table Header</h3>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="83%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Version</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Version # of the Spread Spectrum Table Header and Entries. The current
+Spread Spectrum Table is version with 4.1, a value of 0x41 for this
+field. If the version is 0, then this table will be considered invalid
+and the driver will not use spread spectrum.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Header Size</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Size of the Spread Spectrum Table Header in Bytes. Version 4.1 starts
+with 5 bytes.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Entry Count</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Number of Spread Spectrum Table Entries starting directly after the end
+of this table.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Entry Size</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Size of Each Entry in bytes. Version 4.1 are currently 2 bytes each.</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Flags</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Flags for Spread Spectrum, currently unused. All bits are reserved and
+set to 0.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_spread_spectrum_table_entry">Spread Spectrum Table Entry</h3>
+<div class="tableblock">
+<table rules="all"
+width="40%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<col width="6%" />
+<thead>
+<tr>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">T</p></td>
+<td colspan="6" align="center" valign="top"><p class="table">FreqDt</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Indx</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td colspan="2" align="center" valign="top"><p class="table">VS</p></td>
+<td align="center" valign="top"><p class="table">V</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="83%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">V</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Set if this is a valid entry</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">VS</p></td>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">VPLL spread Source</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set as 0</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Indx</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">DCB Index</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">FreqDt</p></td>
+<td align="left" valign="top"><p class="table">6</p></td>
+<td align="left" valign="top"><p class="table">Frequency Delta in 0.05% units</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">T</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Spread profile type, 0 = center, 1 = down</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set as 0</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Valid</div><p>This field defines whether this entry is valid or not. Defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Entry is invalid and should be skipped.
+</p>
+</li>
+<li>
+<p>
+1 = Entry is valid.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">VPLL Source</div><p>This field lists the source of the VPLL spread. Defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Reference, GPU Internal Source 0 (INTERNAL_SPREAD_0)
+</p>
+</li>
+<li>
+<p>
+1 = Reference, GPU Internal Source 1 (INTERNAL_SPREAD_1)
+</p>
+</li>
+<li>
+<p>
+2 = Reference, GPU External Source (EXTERNAL_SPREAD)
+</p>
+</li>
+<li>
+<p>
+3 = Self, PLL Internal Mechanism
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">DCB Index</div><p>This field lists the associated DCB Index device that should enable
+spread on VPLL while in use.</p></div>
+<div class="paragraph"><div class="title">Frequency Delta</div><p>Delta from target frequency (0.05%).</p></div>
+<div class="paragraph"><div class="title">Spread Type</div><p>Spread profile type. Defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Center Spread
+</p>
+</li>
+<li>
+<p>
+1 = Down Spread
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Notes</div><p>The Frequency Delta and Type fields inside the Entry above are only used
+when <em>VPLL Source</em> is set to 3 (i.e., Self, PLL Internal Mechanism). When
+calculating the configuration for the VPLL&#8217;s own spread, <em>Frequency Delta</em>
+should be interpreted as delta from target frequency such that center
+spread has a bandwidth of</p></div>
+<div class="literalblock">
+<div class="content">
+<pre><code> (2 x SpreadSpectrumTableEntry.FrequencyDelta)</code></pre>
+</div></div>
+<div class="paragraph"><p>and down spread has a bandwidth of</p></div>
+<div class="literalblock">
+<div class="content">
+<pre><code> (1 x SpreadSpectrumTableEntry.FrequencyDelta)</code></pre>
+</div></div>
+<div class="paragraph"><p>The target modulation frequency is assumed to be 33 kHz.</p></div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_i2c_device_table">I2C Device Table</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>This table is not required in the ROM. This table only needs to be
+defined if the board requires some specific driver handling of an I2C
+device. This table will be used only by the the driver.</p></div>
+<div class="paragraph"><p>Specifically, this table grew from the need to define various new I2C HW
+monitoring devices as well as HDTV chips.</p></div>
+<div class="sect2">
+<h3 id="_i2c_device_table_header">I2C Device Table Header</h3>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Size = 4</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Count</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Header Size = 5</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Version = 0x40</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="20%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<thead>
+<tr>
+<th align="center" valign="top">39</th>
+<th align="center" valign="top">38</th>
+<th align="center" valign="top">37</th>
+<th align="center" valign="top">36</th>
+<th align="center" valign="top">35</th>
+<th align="center" valign="top">34</th>
+<th align="center" valign="top">33</th>
+<th align="center" valign="top">32</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Flags</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Version</div><p>Version # of the I2C Device Table Header and Entries. The version will
+start with 4.0, a value of 0x40 here. If this version is 0, then the
+driver will consider this table as invalid and will not use any of the
+data present here.</p></div>
+<div class="paragraph"><div class="title">Header Size</div><p>Size of the I2C Device Table Header in Bytes. Initially, this is 5
+bytes.</p></div>
+<div class="paragraph"><div class="title">Entry Count</div><p>Number of I2C Device Table Entries starting directly after the end of
+this table.</p></div>
+<div class="paragraph"><div class="title">Entry Size</div><p>Size of Each Entry in bytes. Version 4.0 starts with 4 bytes.</p></div>
+<div class="paragraph"><div class="title">Flags</div><p>Flags for I2C Devices.</p></div>
+<div class="paragraph"><p>Currently defined fields are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Bit 0 : Disable External Device Probing: The driver spends some time
+probing for external devices like the framelock, SDI boards, or Thermal
+devices not found in the thermal tables. This bit is added to notify
+the driver that probing isn&#8217;t required because the board doesn&#8217;t support
+it. If set to 0, probing will still occur as normal. If set to 1, it
+will disable the probing on the board.
+</p>
+</li>
+<li>
+<p>
+Bits 1-7 : Reserved. Set as 0.
+</p>
+</li>
+</ul></div>
+</div>
+<div class="sect2">
+<h3 id="_i2c_device_table_header_version_4_0_prior_sizes">I2C Device Table Header Version 4.0 Prior Sizes</h3>
+<div class="tableblock">
+<table rules="all"
+width="60%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="16%" />
+<col width="16%" />
+<col width="66%" />
+<thead>
+<tr>
+<th align="center" valign="top"> DATE </th>
+<th align="center" valign="top"> New Size </th>
+<th align="center" valign="top"> Last Inclusive Field</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Start</p></td>
+<td align="center" valign="top"><p class="table">4 Bytes</p></td>
+<td align="center" valign="top"><p class="table">Entry Size</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">09-14-06</p></td>
+<td align="center" valign="top"><p class="table">5 Bytes</p></td>
+<td align="center" valign="top"><p class="table">Flags</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_i2c_device_table_entry">I2C Device Table Entry</h3>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="5" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td colspan="3" align="center" valign="top"><p class="table">RA</p></td>
+<td colspan="3" align="center" valign="top"><p class="table">WA</p></td>
+<td align="center" valign="top"><p class="table">P</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">I2C Address</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Type</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="83%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Type</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Device (chip) type</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">I2C Address</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">8 bit adjusted I2C address (LSB 0)</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">P</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">External Communications Port</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">WA</p></td>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">Write Access privilege level</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">RA</p></td>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">Read Access privilege level</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">5</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Type</div><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+THERMAL CHIPS
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x01 = ADM 1032
+</p>
+</li>
+<li>
+<p>
+0x02 = MAX 6649
+</p>
+</li>
+<li>
+<p>
+0x03 = LM99
+</p>
+</li>
+<li>
+<p>
+0x06 = MAX 1617
+</p>
+</li>
+<li>
+<p>
+0x07 = LM64
+</p>
+</li>
+<li>
+<p>
+0x0A = ADT7473
+</p>
+</li>
+<li>
+<p>
+0x0B = LM89
+</p>
+</li>
+<li>
+<p>
+0x0C = TMP411
+</p>
+</li>
+<li>
+<p>
+0x04, 0x05, 0x08, and 0x09 = deprecated.
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+I2C ANALOG TO DIGITAL CONVERTERS
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x30 = ADS1112
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+I2C POWER CONTROLLERS
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0xC0 = PIC16F690 micro controller
+</p>
+</li>
+<li>
+<p>
+0x40 = VT1103
+</p>
+</li>
+<li>
+<p>
+0x41 = PX3540 Primarion PX3540 Digital Multiphase PWM Voltage Controller
+</p>
+</li>
+<li>
+<p>
+0x42 = Volterra VT1165
+</p>
+</li>
+<li>
+<p>
+0x43 = CHiL CHL8203/8212/8213/8214
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+SMBUS POWER CONTROLLERS
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x48 = CHiL CHL8112A/B, CHL8225/8228
+</p>
+</li>
+<li>
+<p>
+0x49 = CHiL CHL8266, CHL8316
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+POWER SENSORS
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x4C = INA219
+</p>
+</li>
+<li>
+<p>
+0x4D = INA209
+</p>
+</li>
+<li>
+<p>
+0x4E = INA3221
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+1 CLOCK GENERATORS
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x50 = Cypress CY2XP304
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+GENERAL PURPOSE GPIO CONTROLLERS
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x60 = Philips PCA9555 device for EIAJ-4120 - Japanese HDTV support
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+FAN CONTROLS
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x70 = ADT7473, dBCool Fan Controller
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+HDMI COMPOSITOR/CONVERTER DEVICES
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0x80 = Silicon Image Microcontroller SI1930uC device for HDMI Compositor/Converter
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+GPU I2CS CONTROLLERS
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0xB0 = GT21X - GF10X I2CS interface
+</p>
+</li>
+<li>
+<p>
+0xB1 = GF11X and beyond I2CS interface
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+DISPLAY ENCODER TYPES
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+0xD0 = Anx9805
+</p>
+</li>
+</ul></div>
+</li>
+<li>
+<p>
+0xFF = Skip Entry. This allows for quick removal of an entry from the I2C Devices Table.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">I2C Address</div><p>8-bit aligned, right shifted 7-bit address of the I2C device. The I2C
+spec defines 7 bits for the address [7:1] of the device with 1 bit for
+R/W [0:0]. So, generally, most addresses are listed in their 8 bit
+adjusted form with 0 for the R/W bit. This field must list that 8-bit
+adjusted address.</p></div>
+<div class="paragraph"><div class="title">External Communications Port</div><p>This field defines which communications port is used for this
+device. See the I2C Control Block Header for the listing of the Primary
+and Secondary Communication ports.</p></div>
+<div class="paragraph"><div class="title">Write Access</div><p>This field defines the write access privileges to specific
+levels.</p></div>
+<div class="paragraph"><p>Currently defined values are:
+* 0x0-0x7 = Reserved</p></div>
+<div class="paragraph"><div class="title">Read Access</div><p>This field defines the read access privileges to specific
+levels.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x0-0x7 = Reserved
+</p>
+</li>
+</ul></div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_connector_table">Connector Table</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>This table is required in the ROM. This table should always be defined
+to allow graphical representations of the board to be created. This
+table will be used only by the the driver.</p></div>
+<div class="paragraph"><p>For purposes of this table a connector is defined as the end point on
+the display path where one display can be attached. This may be the
+card edge or attachment points on a breakout cable.</p></div>
+<div class="paragraph"><p>A connector can only output one stream at a time. So, if you have a
+Low-Force Helix (LFH) port on the back of the card, the connector is defined as a DVI-I
+adapter of that breakout cable. That is, there are 2 connectors for
+every 1 LFH port on the back of a card.</p></div>
+<div class="sect2">
+<h3 id="_connector_table_header">Connector Table Header</h3>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Size = 4</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Count</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Header Size = 5</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Version = 0x40</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="20%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<thead>
+<tr>
+<th align="center" valign="top">39</th>
+<th align="center" valign="top">38</th>
+<th align="center" valign="top">37</th>
+<th align="center" valign="top">36</th>
+<th align="center" valign="top">35</th>
+<th align="center" valign="top">34</th>
+<th align="center" valign="top">33</th>
+<th align="center" valign="top">32</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Platform</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Version</div><p>Version # of the Connector Table Header and Entries. The Version will
+start with 4.0, a value of 0x40 here. If this version is 0, then the
+driver will consider this table as invalid and will not use any of the
+data present here.</p></div>
+<div class="paragraph"><div class="title">Header Size</div><p>Size of the Connector Table Header in bytes. Initially, this is 5 bytes.</p></div>
+<div class="paragraph"><div class="title">Entry Count</div><p>Number of Connector Table Entries starting directly after the end of
+this table header.</p></div>
+<div class="paragraph"><div class="title">Entry Size</div><p>Size of Each Entry in bytes. Currently 4 bytes.</p></div>
+<div class="tableblock">
+<table rules="all"
+width="60%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="50%" />
+<col width="50%" />
+<thead>
+<tr>
+<th align="center" valign="top"> DATE </th>
+<th align="center" valign="top"> New Size</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Start</p></td>
+<td align="center" valign="top"><p class="table">2 Bytes</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">2007-06-19</p></td>
+<td align="center" valign="top"><p class="table">4 Bytes</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Platform</div><p>This field specifies the layout of the connectors.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x00 = Normal Add-in Card
+</p>
+</li>
+<li>
+<p>
+0x01 = Two back plate Add-in Cards (Used for tall fan sinks that cause adjacent PCI connection to be unusable)
+</p>
+</li>
+<li>
+<p>
+0x02 = Add-in card (Configurable) - All I2C ports need to be rescanned at boot for possible external device changes.
+</p>
+</li>
+<li>
+<p>
+0x07 = Desktop with Integrated full DP
+</p>
+</li>
+<li>
+<p>
+0x08 = Mobile Add-in Card. Generally have LVDS-SPWG connector on the north edge of the card away from the AGP/PCI bus.
+</p>
+</li>
+<li>
+<p>
+0x09 = MXM module
+</p>
+</li>
+<li>
+<p>
+0x10 = Mobile system with all displays on the back of the system.
+</p>
+</li>
+<li>
+<p>
+0x11 = Mobile system with display connectors on the back and left of the system.
+</p>
+</li>
+<li>
+<p>
+0x18 = Mobile system with extra connectors on the dock
+</p>
+</li>
+<li>
+<p>
+0x20 = Crush (nForce chipset) normal back plate design
+</p>
+</li>
+</ul></div>
+</div>
+<div class="sect2">
+<h3 id="_connector_table_entry">Connector Table Entry</h3>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td colspan="3" align="center" valign="top"><p class="table">LCD ID</p></td>
+<td align="center" valign="top"><p class="table">SRA</p></td>
+<td align="center" valign="top"><p class="table">G</p></td>
+<td align="center" valign="top"><p class="table">F</p></td>
+<td align="center" valign="top"><p class="table">E</p></td>
+<td align="center" valign="top"><p class="table">DID</p></td>
+<td align="center" valign="top"><p class="table">DIC</p></td>
+<td align="center" valign="top"><p class="table">DIB</p></td>
+<td align="center" valign="top"><p class="table">DIA</p></td>
+<td align="center" valign="top"><p class="table">DPD</p></td>
+<td align="center" valign="top"><p class="table">DPC</p></td>
+<td align="center" valign="top"><p class="table">D</p></td>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="center" valign="top"><p class="table">DPB</p></td>
+<td align="center" valign="top"><p class="table">DPA</p></td>
+<td align="center" valign="top"><p class="table">B</p></td>
+<td align="center" valign="top"><p class="table">A</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">Location</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Type</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="83%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">Type</p></td>
+<td align="left" valign="top"><p class="table">8</p></td>
+<td align="left" valign="top"><p class="table">Connector Type</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Location</p></td>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">Physical location description</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">A</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Hotplug A interrupt generation</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">B</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Hotplug B interrupt</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">DPA</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">DP2DVI A</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">DPB</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">DP2DVI B</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">C</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Hotplug C interrupt</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">D</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Hotplug D interrupt</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">DPC</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">DP2DVI C</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">DPD</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">DP2DVI D</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">DIA</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">DPAux/I2C-A</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">DIB</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">DPAux/I2C-B</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">DIC</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">DPAux/I2C-C</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">DID</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">DPAux/I2C-D</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">E</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Hotplug E interrupt</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">F</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Hotplug F interrupt</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">G</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Hotplug G interrupt</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">SRA</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Panel Self Refresh frame lock A interrupt</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">LCDID</p></td>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">LCD interrupt GPIO pin</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Type</div><p>Descriptive name of each connector where only one signal may be
+displayed through that connector at any given time.</p></div>
+<div class="paragraph"><p>If there is a breakout cable where multiple displays can be displayed
+through that breakout cable at the same time, generally the type should
+be listed as Breakout Cable Name - End connector, or Initial Connector -
+Final Connector. Example: LFH - DVI-I - 1.</p></div>
+<div class="paragraph"><p>Because TV&#8217;s can allow more than one connector per TV encoder, all
+connectors associated with the TV device must be grouped together. The
+DCB Display Path will point to the first TV connector on the list. The
+DCB TV DSI Connector Count field will list how many connectors are
+available for the TV.</p></div>
+<div class="paragraph"><p>All devices are considered detachable (or removable) unless otherwise noted.</p></div>
+<div class="paragraph"><p>Currently defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x00 = VGA 15-pin connector
+</p>
+</li>
+<li>
+<p>
+0x01 = DVI-A
+</p>
+</li>
+<li>
+<p>
+0x02 = Pod - VGA 15-pin connector
+</p>
+</li>
+<li>
+<p>
+0x10 = TV - Composite Out
+</p>
+</li>
+<li>
+<p>
+0x11 = TV - S-Video Out
+</p>
+</li>
+<li>
+<p>
+0x12 = TV - S-Video Breakout - Composite (Used for board that list 2 of the RGB bits in the TVDACs field)
+</p>
+</li>
+<li>
+<p>
+0x13 = TV - HDTV Component - YPrPb
+</p>
+</li>
+<li>
+<p>
+0x14 = TV - SCART Connector
+</p>
+</li>
+<li>
+<p>
+0x16 = TV - Composite SCART over the BLUE channel of EIAJ4120 (D-connector)
+</p>
+</li>
+<li>
+<p>
+0x17 = TV - HDTV - EIAJ4120 Connector (aka D-connector)
+</p>
+</li>
+<li>
+<p>
+0x18 = Pod - HDTV - YPrPb
+</p>
+</li>
+<li>
+<p>
+0x19 = Pod - S-Video
+</p>
+</li>
+<li>
+<p>
+0x1A = Pod - Composite
+</p>
+</li>
+<li>
+<p>
+0x20 = DVI-I-TV-S-Video
+</p>
+</li>
+<li>
+<p>
+0x21 = DVI-I-TV-Composite
+</p>
+</li>
+<li>
+<p>
+0x22 = DVI-I-TV-S-Video Breakout-Composite (Used for board that list 2 of the RGB bits in the TVDACs field)
+</p>
+</li>
+<li>
+<p>
+0x30 = DVI-I
+</p>
+</li>
+<li>
+<p>
+0x31 = DVI-D
+</p>
+</li>
+<li>
+<p>
+0x32 = Apple Display Connector (ADC)
+</p>
+</li>
+<li>
+<p>
+0x38 = LFH-DVI-I-1
+</p>
+</li>
+<li>
+<p>
+0x39 = LFH-DVI-I-2
+</p>
+</li>
+<li>
+<p>
+0x3C = BNC Connector
+</p>
+</li>
+<li>
+<p>
+0x40 = LVDS-SPWG-Attached (non-removeable)
+</p>
+</li>
+<li>
+<p>
+0x41 = LVDS-OEM-Attached (non-removeable)
+</p>
+</li>
+<li>
+<p>
+0x42 = LVDS-SPWG-Detached (removeable)
+</p>
+</li>
+<li>
+<p>
+0x43 = LVDS-OEM-Detached (removeable)
+</p>
+</li>
+<li>
+<p>
+0x45 = TMDS-OEM-Attached (non-removeable)
+</p>
+</li>
+<li>
+<p>
+0x46 = DisplayPort External Connector (as a special case, if the "Location"
+ field is 0 and the "Platform" type in the Connector Table Header is 7
+ (Desktop with Integrated full DP), this indicates a non-eDP DisplayPort
+ Internal Connector, which is non-removeable)
+</p>
+</li>
+<li>
+<p>
+0x47 = DisplayPort Internal Connector(non-removeable)
+</p>
+</li>
+<li>
+<p>
+0x48 = DisplayPort (Mini) External Connector
+</p>
+</li>
+<li>
+<p>
+0x50 = VGA 15-pin connector if not docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x51 = VGA 15-pin connector if docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x52 = DVI-I connector if not docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x53 = DVI-I connector if docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x54 = DVI-D connector if not docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x55 = DVI-D connector if docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x56 = DisplayPort External Connector if not docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x57 = DisplayPort External Connector if docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x58 = DisplayPort (Mini) External Connector if not docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x59 = DisplayPort (Mini) External Connector if docked <em>'(See Notes below)</em>'
+</p>
+</li>
+<li>
+<p>
+0x60 = 3-Pin DIN Stereo Connector
+</p>
+</li>
+<li>
+<p>
+0x61 = HDMI-A connector
+</p>
+</li>
+<li>
+<p>
+0x62 = Audio S/PDIF connector
+</p>
+</li>
+<li>
+<p>
+0x63 = HDMI-C (Mini) connector
+</p>
+</li>
+<li>
+<p>
+0x64 = LFH-DP-1
+</p>
+</li>
+<li>
+<p>
+0x65 = LFH-DP-2
+</p>
+</li>
+<li>
+<p>
+0x70 = Virtual connector for Wifi Display (WFD)
+</p>
+</li>
+<li>
+<p>
+0xFF = Skip Entry. This allows for quick removal of an entry from the
+Connector Table.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Location</div><p>Specific locations depend on the platform type. The SW could define
+Real location as ((Platform Type &lt;&lt; 4) &#124; This Location Field) if
+it&#8217;s easier to deal with a single number rather than two separate lists.
+Generally, a value of 0 defines the South most connector, which is the
+connector on the bracket closest to the AGP/PCI connector. The specific
+values here are to be determined.</p></div>
+<div class="paragraph"><div class="title">Hotplug A</div><p>This field dictates if this connector triggers the Hotplug A interrupt.
+If defined, then the Hotplug A interrupt must be defined inside the GPIO
+Assignment table.</p></div>
+<div class="paragraph"><div class="title">Hotplug B</div><p>This field dictates if this connector triggers the Hotplug B interrupt.
+If defined, then the Hotplug B interrupt must be defined inside the GPIO
+Assignment table.</p></div>
+<div class="paragraph"><div class="title">DP2DVI A</div><p>This field indictates if this connector is connected to DP to DVI
+present A. If defined, then the DisplayPort to DVI dongle A present must
+be defined inside the GPIO Assignment table.</p></div>
+<div class="paragraph"><div class="title">DP2DVI B</div><p>This field indictates if this connector is connected to DP to DVI
+present B. If defined, then the DisplayPort to DVI dongle B present must
+be defined inside the GPIO Assignment table.</p></div>
+<div class="paragraph"><div class="title">Hotplug C</div><p>This field dictates if this connector triggers the Hotplug C interrupt.
+If defined, then the Hotplug C interrupt must be defined inside the GPIO
+Assignment table.</p></div>
+<div class="paragraph"><div class="title">Hotplug D</div><p>This field dictates if this connector triggers the Hotplug D interrupt.
+If defined, then the Hotplug D interrupt must be defined inside the GPIO
+Assignment table.</p></div>
+<div class="paragraph"><div class="title">DP2DVI C</div><p>This field indictates if this connector is connected to DP to DVI
+present C. If defined, then the DisplayPort to DVI dongle C present must
+be defined inside the GPIO Assignment table.</p></div>
+<div class="paragraph"><div class="title">DP2DVI D</div><p>This field indictates if this connector is connected to DP to DVI
+present D. If defined, then the DisplayPort to DVI dongle D present must
+be defined inside the GPIO Assignment table.</p></div>
+<div class="paragraph"><div class="title">DPAux/I2C Select A</div><p>This field indictates if this connector is connected to DPAUX/I2C select
+A. If defined, then the DPAUX/I2C select A must be defined inside the
+GPIO Assignment table.</p></div>
+<div class="paragraph"><div class="title">DPAux/I2C Select B</div><p>This field indictates if this connector is connected to DPAUX/I2C select
+B. If defined, then the DPAUX/I2C select B must be defined inside the
+GPIO Assignment table.</p></div>
+<div class="paragraph"><div class="title">DPAux/I2C Select C</div><p>This field indictates if this connector is connected to DPAUX/I2C select
+C. If defined, then the DPAUX/I2C select C must be defined inside the
+GPIO Assignment table.</p></div>
+<div class="paragraph"><div class="title">DPAux/I2C Select D</div><p>This field indictates if this connector is connected to DPAUX/I2C select
+D. If defined, then the DPAUX/I2C select D must be defined inside the
+GPIO Assignment table.</p></div>
+<div class="paragraph"><div class="title">Hotplug E</div><p>This field dictates if this connector triggers the Hotplug E interrupt.
+If defined, then the Hotplug E interrupt must be defined inside the GPIO
+Assignment table.</p></div>
+<div class="paragraph"><div class="title">Hotplug F</div><p>This field dictates if this connector triggers the Hotplug F interrupt.
+If defined, then the Hotplug F interrupt must be defined inside the GPIO
+Assignment table.</p></div>
+<div class="paragraph"><p>Hotplug G.
+This field dictates if this connector triggers the Hotplug G interrupt.
+If defined, then the Hotplug G interrupt must be defined inside the GPIO
+Assignment table.</p></div>
+<div class="paragraph"><div class="title">Panel Self Refresh Frame Lock A</div><p>This field dictates if this connector triggers the FrameLock A
+interrupt. If defined, then the FrameLock A interrupt must be defined
+inside the GPIO Assignment table.</p></div>
+<div class="paragraph"><div class="title">LCD ID</div><p>This field dictates if this connector is connected to LCD# GPIO(s). If
+defined, then the LCD# GPIO(s) must be defined inside the GPIO
+Assignment table. LCD ID field only applies to the connector types
+listed below. All other types must set this field to 0. If
+defined, then the FrameLock A interrupt must be defined inside the GPIO
+Assignment table.</p></div>
+<div class="paragraph"><p>LCD ID only applies for these connector types:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0x40 = LVDS-SPWG-Attached (non-removeable)
+</p>
+</li>
+<li>
+<p>
+0x41 = LVDS-OEM-Attached (non-removeable)
+</p>
+</li>
+<li>
+<p>
+0x42 = LVDS-SPWG-Detached (removeable)
+</p>
+</li>
+<li>
+<p>
+0x43 = LVDS-OEM-Detached (removeable)
+</p>
+</li>
+<li>
+<p>
+0x45 = TMDS-OEM-Attached (non-removeable)
+</p>
+</li>
+<li>
+<p>
+0x46 = DisplayPort with Integrated Full DP (only if the special case described
+ above in the <em>type</em> field&#8217;s entry 0x46 applies)
+</p>
+</li>
+<li>
+<p>
+0x47 = DisplayPort Internal Connector(non-removeable)
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Connected to LCD0 GPIO(s)
+</p>
+</li>
+<li>
+<p>
+1 = Connected to LCD1 GPIO(s)
+</p>
+</li>
+<li>
+<p>
+2 = Connected to LCD2 GPIO(s)
+</p>
+</li>
+<li>
+<p>
+3 = Connected to LCD3 GPIO(s)
+</p>
+</li>
+<li>
+<p>
+4 = Connected to LCD4 GPIO(s)
+</p>
+</li>
+<li>
+<p>
+5 = Connected to LCD5 GPIO(s)
+</p>
+</li>
+<li>
+<p>
+6 = Connected to LCD6 GPIO(s)
+</p>
+</li>
+<li>
+<p>
+7 = Connected to LCD7 GPIO(s)
+</p>
+</li>
+</ul></div>
+<div class="sect3">
+<h4 id="_connector_table_entry_notes">Connector Table Entry Notes</h4>
+<div class="paragraph"><p>There are some connector types, 0x50 through 0x57, that require extra
+code in the detection routines inside any code that uses the DCB.
+For Mobile systems, some connectors might only be on the actual body of
+the notebook. Also, some connectors might only show up on the docking
+station. Therefore we need to make sure that we don&#8217;t allow anyone
+to select a device that is not actually present. So, when we see
+connectors with the "if not docked" and "if docked" text in the
+description, we must make sure that our detection code checks the docked
+condition first and possibly culls any further detection attempts if the
+docked condition is not met.</p></div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_hdtv_translation_table">HDTV Translation Table</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Two GPIO functions (HD Dongle Strap 0/1) are defined to allows users to
+specify the format of an HDTV connected to the system via an external
+switch inside a dongle. Only two pins have been assigned for more than 4
+possible formats (9 as it now) because it is
+unlikely that a given GPU board needs to support all formats. This
+array is indexed from those two GPIOs which would define the HDTV
+format.</p></div>
+<div class="sect2">
+<h3 id="_hdtv_translation_table_header">HDTV Translation Table Header</h3>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Size = 1</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Count</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Header Size = 4</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Version = 0</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Version</div><p>Version # of the HDTV Translation Table Header and Entries. The HDTV
+Translation Table version will start with 0 in this field.</p></div>
+<div class="paragraph"><div class="title">Header Size</div><p>Size of the HDTV Translation Table in bytes. Initially, this is 4 bytes.</p></div>
+<div class="paragraph"><div class="title">Entry Count</div><p>Number of HDTV Translation Table Entries starting directly after the end
+of this header.</p></div>
+<div class="paragraph"><div class="title">Entry Size</div><p>Size of each entry in bytes. Initially, this is 1 byte.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_hdtv_translation_table_entry">HDTV Translation Table Entry</h3>
+<div class="tableblock">
+<table rules="all"
+width="20%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<col width="12%" />
+<thead>
+<tr>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="4" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td colspan="4" align="center" valign="top"><p class="table">HDStand</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">HD Standard</div><p>This field lists the specific standard to use for this entry. Defined
+values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = HD576i
+</p>
+</li>
+<li>
+<p>
+1 = HD480i
+</p>
+</li>
+<li>
+<p>
+2 = HD480p_60
+</p>
+</li>
+<li>
+<p>
+3 = HD576p_50
+</p>
+</li>
+<li>
+<p>
+4 = HD720p_50
+</p>
+</li>
+<li>
+<p>
+5 = HD720p_60
+</p>
+</li>
+<li>
+<p>
+6 = HD1080i_50
+</p>
+</li>
+<li>
+<p>
+7 = HD1080i_60
+</p>
+</li>
+<li>
+<p>
+8 = HD1080p_24
+</p>
+</li>
+</ul></div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_switched_outputs_table">Switched Outputs Table</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>There are new designs that allow to change the routing of device
+detection, selection, switching and I2C switching by way of a GPIO.
+This table assigns the relationship of the routing to specific DCB
+indices.</p></div>
+<div class="sect2">
+<h3 id="_switched_outputs_table_header">Switched Outputs Table Header</h3>
+<div class="tableblock">
+<table rules="all"
+width="80%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<col width="3%" />
+<thead>
+<tr>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Size = 5</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Entry Count</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Header Size = 4</p></td>
+<td colspan="8" align="center" valign="top"><p class="table">Version = 0x10</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">Version</div><p>Version # of the Switched Outputs Table Header and Entries. The Switched
+Outputs Table will version will start with 0x10 in this field.</p></div>
+<div class="paragraph"><div class="title">Header Size</div><p>Size of the Switched Outputs Table in bytes.</p></div>
+<div class="paragraph"><div class="title">Entry Count</div><p>Number of Switched Outputs Table Entries starting directly after the end
+of this header.</p></div>
+<div class="paragraph"><div class="title">Entry Size</div><p>Size of each entry in bytes. Initially, this is 5 bytes.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_switched_outputs_table_entry">Switched Outputs Table Entry</h3>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<col width="2%" />
+<thead>
+<tr>
+<th align="center" valign="top">39</th>
+<th align="center" valign="top">38</th>
+<th align="center" valign="top">37</th>
+<th align="center" valign="top">36</th>
+<th align="center" valign="top">35</th>
+<th align="center" valign="top">34</th>
+<th align="center" valign="top">33</th>
+<th align="center" valign="top">32</th>
+<th align="center" valign="top">31</th>
+<th align="center" valign="top">30</th>
+<th align="center" valign="top">29</th>
+<th align="center" valign="top">28</th>
+<th align="center" valign="top">27</th>
+<th align="center" valign="top">26</th>
+<th align="center" valign="top">25</th>
+<th align="center" valign="top">24</th>
+<th align="center" valign="top">23</th>
+<th align="center" valign="top">22</th>
+<th align="center" valign="top">21</th>
+<th align="center" valign="top">20</th>
+<th align="center" valign="top">19</th>
+<th align="center" valign="top">18</th>
+<th align="center" valign="top">17</th>
+<th align="center" valign="top">16</th>
+<th align="center" valign="top">15</th>
+<th align="center" valign="top">14</th>
+<th align="center" valign="top">13</th>
+<th align="center" valign="top">12</th>
+<th align="center" valign="top">11</th>
+<th align="center" valign="top">10</th>
+<th align="center" valign="top">9</th>
+<th align="center" valign="top">8</th>
+<th align="center" valign="top">7</th>
+<th align="center" valign="top">6</th>
+<th align="center" valign="top">5</th>
+<th align="center" valign="top">4</th>
+<th align="center" valign="top">3</th>
+<th align="center" valign="top">2</th>
+<th align="center" valign="top">1</th>
+<th align="center" valign="top">0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">S</p></td>
+<td colspan="5" align="center" valign="top"><p class="table">GPIO#</p></td>
+<td align="center" valign="top"><p class="table">T</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">S</p></td>
+<td colspan="5" align="center" valign="top"><p class="table">GPIO#</p></td>
+<td align="center" valign="top"><p class="table">T</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">S</p></td>
+<td colspan="5" align="center" valign="top"><p class="table">GPIO#</p></td>
+<td align="center" valign="top"><p class="table">T</p></td>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="center" valign="top"><p class="table">S</p></td>
+<td colspan="5" align="center" valign="top"><p class="table">GPIO#</p></td>
+<td align="center" valign="top"><p class="table">T</p></td>
+<td colspan="3" align="center" valign="top"><p class="table">Rsvd</p></td>
+<td colspan="5" align="center" valign="top"><p class="table">DCBx</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="60%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="12%" />
+<col width="4%" />
+<col width="83%" />
+<thead>
+<tr>
+<th align="center" valign="top"> Name </th>
+<th align="left" valign="top"> Bit width </th>
+<th align="left" valign="top"> Values and Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center" valign="top"><p class="table">DCBx</p></td>
+<td align="left" valign="top"><p class="table">5</p></td>
+<td align="left" valign="top"><p class="table">DCB table index for this entry</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">Rsvd</p></td>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">T</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Device Selection GPIO Type, 1 = external</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">GPIO#</p></td>
+<td align="left" valign="top"><p class="table">5</p></td>
+<td align="left" valign="top"><p class="table">Device Selection GPIO Number</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">S</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Device Selection GPIO State</p></td>
+</tr>
+<tr>
+<td align="center" valign="top"><p class="table">R</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Reserved, set to 0</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><div class="title">DCB Index</div><p>This index is used to determine which entry in the DCB table this
+Switched Output Table entry goes with.</p></div>
+<div class="paragraph"><div class="title">Device Selection GPIO Type</div><p>This flag determines the location of the control for the GPIO that
+controls Device Selection. Defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Internal GPIO or GPU controlled GPIO
+</p>
+</li>
+<li>
+<p>
+1 = External GPIO
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Device Selection GPIO Number</div><p>This field describes the GPIO number that controls device selection. If
+the value is set to 0x1F, then this functionality is not used. The</p></div>
+<div class="paragraph"><div class="title">Device Selection GPIO State</div><p>This flag tells the logical GPIO state in order to select or enable the
+associated DCB index for this entry. The physical logic here is found
+in the <a href="#_gpio_assignment_table">GPIO Assignment Table</a>. Defined values
+are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Logical OFF state.
+</p>
+</li>
+<li>
+<p>
+1 = Logical ON state.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Device Detection Switching GPIO Type</div><p>This flag determines the location of the control for the GPIO that
+controls Device Detection. Defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Internal GPIO or GPU controlled GPIO
+</p>
+</li>
+<li>
+<p>
+1 = External GPIO
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Device Detection Switching GPIO Number</div><p>This field describes the GPIO number that controls Device Detection. If
+the value is set to 0x1F, then this functionality is not used. In order
+to run detection, this GPIO must be set to the Device Detection
+Switching GPIO State before reading the state.</p></div>
+<div class="paragraph"><div class="title">Device Detection Switching GPIO State</div><p>This flag tells the logical GPIO state in order to detect the associated
+DCB index for this entry. The physical logic here is found in the
+<a href="#_gpio_assignment_table">GPIO Assignment Table</a>. Defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Logical OFF state.
+</p>
+</li>
+<li>
+<p>
+1 = Logical ON state.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Device Detection Load GPIO Type</div><p>This flag determines the location of the input for the GPIO that returns
+the Device Detection Load. Defined Values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Internal GPIO or GPU controlled GPIO
+</p>
+</li>
+<li>
+<p>
+1 = External GPIO
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">Device Detection Load GPIO Number</div><p>This field describes the GPIO number that returns Device Detection Load.
+If the value is set to 0x1F, then this functionality is not used. When
+running detection, the Devices Detecion Switching GPIO must be set to
+the Device Detection Switching GPIO State. Then read this GPIO to get
+the Load State.</p></div>
+<div class="paragraph"><div class="title">Device Detection Load GPIO State</div><p>This flag tells the physical GPIO state that indicates a connected
+state. Defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = If the GPIO reads back physically as 0, then the device is connected.
+</p>
+</li>
+<li>
+<p>
+1 = If the GPIO reads back physically as 1, then the device is connected.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">DDC Port Switching GPIO Type</div><p>This flag determines the location of the control for the GPIO that
+controls the DDC port. Defined Values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Internal GPIO or GPU controlled GPIO
+</p>
+</li>
+<li>
+<p>
+1 = External GPIO
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><div class="title">DDC Port Switching GPIO Number</div><p>This field describes the GPIO number that controls the routing of the
+DDC Port. If the value is set to 0x1F, then this functionality is not
+used. In order to use the DDC Port, this GPIO must be set to the DDC
+Port Switching GPIO State.</p></div>
+<div class="paragraph"><div class="title">DDC Port Switching GPIO State</div><p>This flag tells the logical GPIO state in order to use the DDC Port for
+this DCB index entry. The physical logic here is found in the
+<a href="#_gpio_assignment_table">GPIO Assignment Table</a>. Defined values are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+0 = Logical OFF state.
+</p>
+</li>
+<li>
+<p>
+1 = Logical ON state.
+</p>
+</li>
+</ul></div>
+</div>
+</div>
+</div>
+</div>
+<div id="footnotes"><hr /></div>
+<div id="footer">
+<div id="footer-text">
+Last updated Thu Aug 15 10:56:32 PDT 2013
+</div>
+</div>
+</body>
+</html>
diff --git a/DCB/Stall_lock_dcb.jpg b/DCB/Stall_lock_dcb.jpg
new file mode 100644
index 0000000..185fc9b
--- /dev/null
+++ b/DCB/Stall_lock_dcb.jpg
Binary files differ
diff --git a/DCB/ThermalPower.gif b/DCB/ThermalPower.gif
new file mode 100644
index 0000000..510beb7
--- /dev/null
+++ b/DCB/ThermalPower.gif
Binary files differ
diff --git a/DCB/ThermalPowerDisable.gif b/DCB/ThermalPowerDisable.gif
new file mode 100644
index 0000000..ae658d2
--- /dev/null
+++ b/DCB/ThermalPowerDisable.gif
Binary files differ