<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Xilinx ZynqMP Ultrascale+ DisplayPort Subsystem — The Linux Kernel documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=3918102e" />
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="nova NVIDIA GPU drivers" href="nova/index.html" />
<link rel="prev" title="drm/Panthor CSF driver" href="panthor.html" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/logo.svg" alt="Logo of The Linux Kernel"/>
</a></p>
<h1 class="logo"><a href="../index.html">The Linux Kernel</a></h1>
<p class="blurb">6.18.50</p>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>
<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/index.html">All development-process docs</a></li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../subsystem-apis.html">Subsystems</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#core-subsystems">Core subsystems</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../subsystem-apis.html#human-interfaces">Human interfaces</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../input/index.html">Input Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hid/index.html">Human Interface Devices (HID)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../sound/index.html">Sound Subsystem Documentation</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="index.html">GPU Driver Developer’s Guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="../fb/index.html">Frame Buffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../leds/index.html">LEDs</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#networking-interfaces">Networking interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#storage-interfaces">Storage interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#other-subsystems">Other subsystems</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../arch/index.html">CPU architectures</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../translations/index.html">Translations</a></li>
</ul>
</div>
<script type="text/javascript"> <!--
var sbar = document.getElementsByClassName("sphinxsidebar")[0];
let currents = document.getElementsByClassName("current")
if (currents.length) {
sbar.scrollTop = currents[currents.length - 1].offsetTop;
}
--> </script>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/gpu/zynqmp.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
</div>
</div>
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="xilinx-zynqmp-ultrascale-displayport-subsystem">
<h1>Xilinx ZynqMP Ultrascale+ DisplayPort Subsystem<a class="headerlink" href="#xilinx-zynqmp-ultrascale-displayport-subsystem" title="Link to this heading">¶</a></h1>
<p>This subsystem handles DisplayPort video and audio output on the ZynqMP. It
supports in-memory framebuffers with the DisplayPort DMA controller
(xilinx-dpdma), as well as “live” video and audio from the programmable logic
(PL). This subsystem can perform several transformations, including color space
conversion, alpha blending, and audio mixing, although not all features are
currently supported.</p>
<section id="debugfs">
<h2>debugfs<a class="headerlink" href="#debugfs" title="Link to this heading">¶</a></h2>
<p>To support debugging and compliance testing, several test modes can be enabled
though debugfs. The following files in /sys/kernel/debug/dri/X/DP-1/test/
control the DisplayPort test modes:</p>
<dl>
<dt>active:</dt><dd><p>Writing a 1 to this file will activate test mode, and writing a 0 will
deactivate test mode. Writing a 1 or 0 when the test mode is already
active/inactive will re-activate/re-deactivate test mode. When test
mode is inactive, changes made to other files will have no (immediate)
effect, although the settings will be saved for when test mode is
activated. When test mode is active, changes made to other files will
apply immediately.</p>
</dd>
<dt>custom:</dt><dd><p>Custom test pattern value</p>
</dd>
<dt>downspread:</dt><dd><p>Enable/disable clock downspreading (spread-spectrum clocking) by
writing 1/0</p>
</dd>
<dt>enhanced:</dt><dd><p>Enable/disable enhanced framing</p>
</dd>
<dt>ignore_aux_errors:</dt><dd><p>Ignore AUX errors when set to 1. Writes to this file take effect
immediately (regardless of whether test mode is active) and affect all
AUX transfers.</p>
</dd>
<dt>ignore_hpd:</dt><dd><p>Ignore hotplug events (such as cable removals or monitor link
retraining requests) when set to 1. Writes to this file take effect
immediately (regardless of whether test mode is active).</p>
</dd>
<dt>laneX_preemphasis:</dt><dd><p>Preemphasis from 0 (lowest) to 2 (highest) for lane X</p>
</dd>
<dt>laneX_swing:</dt><dd><p>Voltage swing from 0 (lowest) to 3 (highest) for lane X</p>
</dd>
<dt>lanes:</dt><dd><p>Number of lanes to use (1, 2, or 4)</p>
</dd>
<dt>pattern:</dt><dd><p>Test pattern. May be one of:</p>
<blockquote>
<div><dl class="simple">
<dt>video</dt><dd><p>Use regular video input</p>
</dd>
<dt>symbol-error</dt><dd><p>Symbol error measurement pattern</p>
</dd>
<dt>prbs7</dt><dd><p>Output of the PRBS7 (x^7 + x^6 + 1) polynomial</p>
</dd>
<dt>80bit-custom</dt><dd><p>A custom 80-bit pattern</p>
</dd>
<dt>cp2520</dt><dd><p>HBR2 compliance eye pattern</p>
</dd>
<dt>tps1</dt><dd><p>Link training symbol pattern TPS1 (/D10.2/)</p>
</dd>
<dt>tps2</dt><dd><p>Link training symbol pattern TPS2</p>
</dd>
<dt>tps3</dt><dd><p>Link training symbol pattern TPS3 (for HBR2)</p>
</dd>
</dl>
</div></blockquote>
</dd>
<dt>rate:</dt><dd><p>Rate in hertz. One of</p>
<blockquote>
<div><ul class="simple">
<li><p>5400000000 (HBR2)</p></li>
<li><p>2700000000 (HBR)</p></li>
<li><p>1620000000 (RBR)</p></li>
</ul>
</div></blockquote>
</dd>
</dl>
<p>You can dump the displayport test settings with the following command:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>for prop in /sys/kernel/debug/dri/1/DP-1/test/*; do
printf '%-17s ' ${prop##*/}
if [ ${prop##*/} = custom ]; then
hexdump -C $prop | head -1
else
cat $prop
fi
done
</pre></div>
</div>
<p>The output could look something like:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>active 1
custom 00000000 00 00 00 00 00 00 00 00 00 00 |..........|
downspread 0
enhanced 1
ignore_aux_errors 1
ignore_hpd 1
lane0_preemphasis 0
lane0_swing 3
lane1_preemphasis 0
lane1_swing 3
lanes 2
pattern prbs7
rate 1620000000
</pre></div>
</div>
<p>The recommended test procedure is to connect the board to a monitor,
configure test mode, activate test mode, and then disconnect the cable
and connect it to your test equipment of choice. For example, one
sequence of commands could be:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>echo 1 > /sys/kernel/debug/dri/1/DP-1/test/enhanced
echo tps1 > /sys/kernel/debug/dri/1/DP-1/test/pattern
echo 1620000000 > /sys/kernel/debug/dri/1/DP-1/test/rate
echo 1 > /sys/kernel/debug/dri/1/DP-1/test/ignore_aux_errors
echo 1 > /sys/kernel/debug/dri/1/DP-1/test/ignore_hpd
echo 1 > /sys/kernel/debug/dri/1/DP-1/test/active
</pre></div>
</div>
<p>at which point the cable could be disconnected from the monitor.</p>
</section>
<section id="internals">
<h2>Internals<a class="headerlink" href="#internals" title="Link to this heading">¶</a></h2>
<dl class="c enum">
<dt class="sig sig-object c" id="c.zynqmp_dpsub_layer_id">
<span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dpsub_layer_id</span></span></span><a class="headerlink" href="#c.zynqmp_dpsub_layer_id" title="Link to this definition">¶</a><br /></dt>
<dd><p>Layer identifier</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Constants</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">ZYNQMP_DPSUB_LAYER_VID</span></code></dt><dd><p>Video layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">ZYNQMP_DPSUB_LAYER_GFX</span></code></dt><dd><p>Graphics layer</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_dpsub">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dpsub</span></span></span><a class="headerlink" href="#c.zynqmp_dpsub" title="Link to this definition">¶</a><br /></dt>
<dd><p>ZynqMP DisplayPort Subsystem</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_dpsub {
struct device *dev;
struct clk *apb_clk;
struct clk *vid_clk;
bool vid_clk_from_ps;
struct clk *aud_clk;
bool aud_clk_from_ps;
unsigned int connected_ports;
bool dma_enabled;
struct zynqmp_dpsub_drm *drm;
struct drm_bridge *bridge;
struct zynqmp_disp *disp;
struct zynqmp_disp_layer *layers[ZYNQMP_DPSUB_NUM_LAYERS];
struct zynqmp_dp *dp;
unsigned int dma_align;
struct zynqmp_dpsub_audio *audio;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">dev</span></code></dt><dd><p>The physical device</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">apb_clk</span></code></dt><dd><p>The APB clock</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">vid_clk</span></code></dt><dd><p>Video clock</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">vid_clk_from_ps</span></code></dt><dd><p>True of the video clock comes from PS, false from PL</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">aud_clk</span></code></dt><dd><p>Audio clock</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">aud_clk_from_ps</span></code></dt><dd><p>True of the audio clock comes from PS, false from PL</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">connected_ports</span></code></dt><dd><p>Bitmask of connected ports in the device tree</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dma_enabled</span></code></dt><dd><p>True if the DMA interface is enabled, false if the DPSUB is
driven by the live input</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">drm</span></code></dt><dd><p>The DRM/KMS device data</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bridge</span></code></dt><dd><p>The DP encoder bridge</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">disp</span></code></dt><dd><p>The display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">layers</span></code></dt><dd><p>Video and graphics layers</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dp</span></code></dt><dd><p>The DisplayPort controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dma_align</span></code></dt><dd><p>DMA alignment constraint (must be a power of 2)</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">audio</span></code></dt><dd><p>DP audio data</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_dpsub_drm">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dpsub_drm</span></span></span><a class="headerlink" href="#c.zynqmp_dpsub_drm" title="Link to this definition">¶</a><br /></dt>
<dd><p>ZynqMP DisplayPort Subsystem DRM/KMS data</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_dpsub_drm {
struct zynqmp_dpsub *dpsub;
struct drm_device dev;
struct drm_plane planes[ZYNQMP_DPSUB_NUM_LAYERS];
struct drm_crtc crtc;
struct drm_encoder encoder;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">dpsub</span></code></dt><dd><p>Backpointer to the DisplayPort subsystem</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dev</span></code></dt><dd><p>The DRM/KMS device</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">planes</span></code></dt><dd><p>The DRM planes</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">crtc</span></code></dt><dd><p>The DRM CRTC</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">encoder</span></code></dt><dd><p>The dummy DRM encoder</p>
</dd>
</dl>
</div>
<dl class="c enum">
<dt class="sig sig-object c" id="c.zynqmp_dpsub_layer_mode">
<span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dpsub_layer_mode</span></span></span><a class="headerlink" href="#c.zynqmp_dpsub_layer_mode" title="Link to this definition">¶</a><br /></dt>
<dd><p>Layer mode</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Constants</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">ZYNQMP_DPSUB_LAYER_NONLIVE</span></code></dt><dd><p>non-live (memory) mode</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">ZYNQMP_DPSUB_LAYER_LIVE</span></code></dt><dd><p>live (stream) mode</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_disp_format">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_format</span></span></span><a class="headerlink" href="#c.zynqmp_disp_format" title="Link to this definition">¶</a><br /></dt>
<dd><p>Display subsystem format information</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_disp_format {
u32 drm_fmt;
u32 bus_fmt;
u32 buf_fmt;
bool swap;
const u32 *sf;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">drm_fmt</span></code></dt><dd><p>DRM format (4CC)</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bus_fmt</span></code></dt><dd><p>Media bus format</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">buf_fmt</span></code></dt><dd><p>AV buffer format</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">swap</span></code></dt><dd><p>Flag to swap R & B for RGB formats, and U & V for YUV formats</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">sf</span></code></dt><dd><p>Scaling factors for color components</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_dma">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_dma</span></span></span><a class="headerlink" href="#c.zynqmp_disp_layer_dma" title="Link to this definition">¶</a><br /></dt>
<dd><p>DMA channel for one data plane of a layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_disp_layer_dma {
struct dma_chan *chan;
struct dma_interleaved_template xt;
struct data_chunk sgl;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">chan</span></code></dt><dd><p>DMA channel</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">xt</span></code></dt><dd><p>Interleaved DMA descriptor template</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">sgl</span></code></dt><dd><p>Data chunk for dma_interleaved_template</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_info">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_info</span></span></span><a class="headerlink" href="#c.zynqmp_disp_layer_info" title="Link to this definition">¶</a><br /></dt>
<dd><p>Static layer information</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_disp_layer_info {
const struct zynqmp_disp_format *formats;
unsigned int num_formats;
unsigned int num_channels;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">formats</span></code></dt><dd><p>Array of supported formats</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">num_formats</span></code></dt><dd><p>Number of formats in <strong>formats</strong> array</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">num_channels</span></code></dt><dd><p>Number of DMA channels</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></span><a class="headerlink" href="#c.zynqmp_disp_layer" title="Link to this definition">¶</a><br /></dt>
<dd><p>Display layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_disp_layer {
enum zynqmp_dpsub_layer_id id;
struct zynqmp_disp *disp;
const struct zynqmp_disp_layer_info *info;
struct zynqmp_disp_layer_dma dmas[ZYNQMP_DISP_MAX_NUM_SUB_PLANES];
const struct zynqmp_disp_format *disp_fmt;
const struct drm_format_info *drm_fmt;
enum zynqmp_dpsub_layer_mode mode;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">id</span></code></dt><dd><p>Layer ID</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">disp</span></code></dt><dd><p>Back pointer to <a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><code class="xref c c-struct docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span></code></a></p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">info</span></code></dt><dd><p>Static layer information</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dmas</span></code></dt><dd><p>DMA channels</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">disp_fmt</span></code></dt><dd><p>Current format information</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">drm_fmt</span></code></dt><dd><p>Current DRM format information</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">mode</span></code></dt><dd><p>Current operation mode</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_disp">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp</span></span></span><a class="headerlink" href="#c.zynqmp_disp" title="Link to this definition">¶</a><br /></dt>
<dd><p>Display controller</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_disp {
struct device *dev;
struct zynqmp_dpsub *dpsub;
void __iomem *blend;
void __iomem *avbuf;
struct zynqmp_disp_layer layers[ZYNQMP_DPSUB_NUM_LAYERS];
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">dev</span></code></dt><dd><p>Device structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dpsub</span></code></dt><dd><p>Display subsystem</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">blend</span></code></dt><dd><p>Register I/O base address for the blender</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">avbuf</span></code></dt><dd><p>Register I/O base address for the audio/video buffer manager</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">layers</span></code></dt><dd><p>Layers (planes)</p>
</dd>
</dl>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_set_format">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_set_format</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_format" title="zynqmp_disp_format"><span class="n"><span class="pre">zynqmp_disp_format</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">fmt</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_set_format" title="Link to this definition">¶</a><br /></dt>
<dd><p>Set the input format for a layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">const</span> <span class="pre">struct</span> <span class="pre">zynqmp_disp_format</span> <span class="pre">*fmt</span></code></dt><dd><p>The format information</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Set the video buffer manager format for <strong>layer</strong> to <strong>fmt</strong>.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_set_clocks_sources">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_set_clocks_sources</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">video_from_ps</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">audio_from_ps</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">timings_internal</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_set_clocks_sources" title="Link to this definition">¶</a><br /></dt>
<dd><p>Set the clocks sources</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bool</span> <span class="pre">video_from_ps</span></code></dt><dd><p>True if the video clock originates from the PS</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bool</span> <span class="pre">audio_from_ps</span></code></dt><dd><p>True if the audio clock originates from the PS</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bool</span> <span class="pre">timings_internal</span></code></dt><dd><p>True if video timings are generated internally</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Set the source for the video and audio clocks, as well as for the video
timings. Clocks can originate from the PS or PL, and timings can be
generated internally or externally.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_enable_channels">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_enable_channels</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_enable_channels" title="Link to this definition">¶</a><br /></dt>
<dd><p>Enable buffer channels</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Enable all (video and audio) buffer channels.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_disable_channels">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_disable_channels</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_disable_channels" title="Link to this definition">¶</a><br /></dt>
<dd><p>Disable buffer channels</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Disable all (video and audio) buffer channels.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_enable_audio">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_enable_audio</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_enable_audio" title="Link to this definition">¶</a><br /></dt>
<dd><p>Enable audio</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Enable all audio buffers with a non-live (memory) source.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_disable_audio">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_disable_audio</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_disable_audio" title="Link to this definition">¶</a><br /></dt>
<dd><p>Disable audio</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Disable all audio buffers.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_enable_video">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_enable_video</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_enable_video" title="Link to this definition">¶</a><br /></dt>
<dd><p>Enable a video layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Enable the video/graphics buffer for <strong>layer</strong>.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_disable_video">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_disable_video</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_disable_video" title="Link to this definition">¶</a><br /></dt>
<dd><p>Disable a video layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Disable the video/graphics buffer for <strong>layer</strong>.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_enable">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_enable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_enable" title="Link to this definition">¶</a><br /></dt>
<dd><p>Enable the video pipe</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>De-assert the video pipe reset.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_avbuf_disable">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_avbuf_disable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_avbuf_disable" title="Link to this definition">¶</a><br /></dt>
<dd><p>Disable the video pipe</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Assert the video pipe reset.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_blend_set_output_format">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_blend_set_output_format</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="n"><span class="pre">zynqmp_dpsub_format</span></span><span class="w"> </span><span class="n"><span class="pre">format</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_blend_set_output_format" title="Link to this definition">¶</a><br /></dt>
<dd><p>Set the output format of the blender</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">enum</span> <span class="pre">zynqmp_dpsub_format</span> <span class="pre">format</span></code></dt><dd><p>Output format</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Set the output format of the blender to <strong>format</strong>.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_blend_set_bg_color">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_blend_set_bg_color</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="n"><span class="pre">rcr</span></span>, <span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="n"><span class="pre">gy</span></span>, <span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="n"><span class="pre">bcb</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_blend_set_bg_color" title="Link to this definition">¶</a><br /></dt>
<dd><p>Set the background color</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u32</span> <span class="pre">rcr</span></code></dt><dd><p>Red/Cr color component</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u32</span> <span class="pre">gy</span></code></dt><dd><p>Green/Y color component</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u32</span> <span class="pre">bcb</span></code></dt><dd><p>Blue/Cb color component</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Set the background color to (<strong>rcr</strong>, <strong>gy</strong>, <strong>bcb</strong>), corresponding to the R, G and
B or Cr, Y and Cb components respectively depending on the selected output
format.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_blend_set_global_alpha">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_blend_set_global_alpha</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">enable</span></span>, <span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="n"><span class="pre">alpha</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_blend_set_global_alpha" title="Link to this definition">¶</a><br /></dt>
<dd><p>Configure global alpha blending</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bool</span> <span class="pre">enable</span></code></dt><dd><p>True to enable global alpha blending</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u32</span> <span class="pre">alpha</span></code></dt><dd><p>Global alpha value (ignored if <strong>enabled</strong> is false)</p>
</dd>
</dl>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_blend_layer_set_csc">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_blend_layer_set_csc</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">u16</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coeffs</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">offsets</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_blend_layer_set_csc" title="Link to this definition">¶</a><br /></dt>
<dd><p>Configure colorspace conversion for layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">const</span> <span class="pre">u16</span> <span class="pre">*coeffs</span></code></dt><dd><p>Colorspace conversion matrix</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">const</span> <span class="pre">u32</span> <span class="pre">*offsets</span></code></dt><dd><p>Colorspace conversion offsets</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Configure the input colorspace conversion matrix and offsets for the <strong>layer</strong>.
Columns of the matrix are automatically swapped based on the input format to
handle RGB and YCrCb components permutations.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_blend_layer_enable">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_blend_layer_enable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_blend_layer_enable" title="Link to this definition">¶</a><br /></dt>
<dd><p>Enable a layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
</dl>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_blend_layer_disable">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_blend_layer_disable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_blend_layer_disable" title="Link to this definition">¶</a><br /></dt>
<dd><p>Disable a layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
</dl>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_find_format">
<span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_format" title="zynqmp_disp_format"><span class="n"><span class="pre">zynqmp_disp_format</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_find_format</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span>, <span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="n"><span class="pre">drm_fmt</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_find_format" title="Link to this definition">¶</a><br /></dt>
<dd><p>Find format information for a DRM format</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u32</span> <span class="pre">drm_fmt</span></code></dt><dd><p>DRM format to search</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Search display subsystem format information corresponding to the given DRM
format <strong>drm_fmt</strong> for the <strong>layer</strong>, and return a pointer to the format
descriptor.</p>
<p><strong>Return</strong></p>
<p>A pointer to the format descriptor if found, NULL otherwise</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_find_live_format">
<span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_format" title="zynqmp_disp_format"><span class="n"><span class="pre">zynqmp_disp_format</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_find_live_format</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span>, <span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="n"><span class="pre">media_bus_format</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_find_live_format" title="Link to this definition">¶</a><br /></dt>
<dd><p>Find format information for given media bus format</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u32</span> <span class="pre">media_bus_format</span></code></dt><dd><p>Media bus format to search</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Search display subsystem format information corresponding to the given media
bus format <strong>media_bus_format</strong> for the <strong>layer</strong>, and return a pointer to the
format descriptor.</p>
<p><strong>Return</strong></p>
<p>A pointer to the format descriptor if found, NULL otherwise</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_drm_formats">
<span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_drm_formats</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span>, <span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">num_formats</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_drm_formats" title="Link to this definition">¶</a><br /></dt>
<dd><p>Return the DRM formats supported by the layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">unsigned</span> <span class="pre">int</span> <span class="pre">*num_formats</span></code></dt><dd><p>Pointer to the returned number of formats</p>
</dd>
</dl>
<p><strong>NOTE</strong></p>
<p>This function doesn’t make sense for live video layers and will
always return an empty list in such cases. <a class="reference internal" href="#c.zynqmp_disp_live_layer_formats" title="zynqmp_disp_live_layer_formats"><code class="xref c c-func docutils literal notranslate"><span class="pre">zynqmp_disp_live_layer_formats()</span></code></a>
should be used to query a list of media bus formats supported by the live
video input layer.</p>
<p><strong>Return</strong></p>
<p>A newly allocated u32 array that stores all the DRM formats
supported by the layer. The number of formats in the array is returned
through the num_formats argument.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_live_layer_formats">
<span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_live_layer_formats</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span>, <span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">num_formats</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_live_layer_formats" title="Link to this definition">¶</a><br /></dt>
<dd><p>Return the media bus formats supported by the live video layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">unsigned</span> <span class="pre">int</span> <span class="pre">*num_formats</span></code></dt><dd><p>Pointer to the returned number of formats</p>
</dd>
</dl>
<p><strong>NOTE</strong></p>
<p>This function should be used only for live video input layers.</p>
<p><strong>Return</strong></p>
<p>A newly allocated u32 array of media bus formats supported by the
layer. The number of formats in the array is returned through the
<strong>num_formats</strong> argument.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_enable">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_enable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_enable" title="Link to this definition">¶</a><br /></dt>
<dd><p>Enable a layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Enable the <strong>layer</strong> in the audio/video buffer manager and the blender. DMA
channels are started separately by <a class="reference internal" href="#c.zynqmp_disp_layer_update" title="zynqmp_disp_layer_update"><code class="xref c c-func docutils literal notranslate"><span class="pre">zynqmp_disp_layer_update()</span></code></a>.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_disable">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_disable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_disable" title="Link to this definition">¶</a><br /></dt>
<dd><p>Disable the layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Disable the layer by stopping its DMA channels and disabling it in the
audio/video buffer manager and the blender.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_set_format">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_set_format</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="drm-kms.html#c.drm_format_info" title="drm_format_info"><span class="n"><span class="pre">drm_format_info</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">info</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_set_format" title="Link to this definition">¶</a><br /></dt>
<dd><p>Set the layer format</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">const</span> <span class="pre">struct</span> <span class="pre">drm_format_info</span> <span class="pre">*info</span></code></dt><dd><p>The format info</p>
</dd>
</dl>
<p><strong>NOTE</strong></p>
<p>Use <a class="reference internal" href="#c.zynqmp_disp_layer_set_live_format" title="zynqmp_disp_layer_set_live_format"><code class="xref c c-func docutils literal notranslate"><span class="pre">zynqmp_disp_layer_set_live_format()</span></code></a> to set media bus format for
live video layers.</p>
<p>Set the format for <strong>layer</strong> to <strong>info</strong>. The layer must be disabled.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_set_live_format">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_set_live_format</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span>, <span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="n"><span class="pre">media_bus_format</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_set_live_format" title="Link to this definition">¶</a><br /></dt>
<dd><p>Set the live video layer format</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u32</span> <span class="pre">media_bus_format</span></code></dt><dd><p>Media bus format to set</p>
</dd>
</dl>
<p><strong>NOTE</strong></p>
<p>This function should not be used to set format for non-live video
layer. Use <a class="reference internal" href="#c.zynqmp_disp_layer_set_format" title="zynqmp_disp_layer_set_format"><code class="xref c c-func docutils literal notranslate"><span class="pre">zynqmp_disp_layer_set_format()</span></code></a> instead.</p>
<p>Set the display format for the live <strong>layer</strong>. The layer must be disabled.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_update">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_update</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="drm-kms.html#c.drm_plane_state" title="drm_plane_state"><span class="n"><span class="pre">drm_plane_state</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_update" title="Link to this definition">¶</a><br /></dt>
<dd><p>Update the layer framebuffer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">drm_plane_state</span> <span class="pre">*state</span></code></dt><dd><p>The plane state</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Update the framebuffer for the layer by issuing a new DMA engine transaction
for the new framebuffer.</p>
<p><strong>Return</strong></p>
<p>0 on success, or the DMA descriptor failure error otherwise</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_release_dma">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_release_dma</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_release_dma" title="Link to this definition">¶</a><br /></dt>
<dd><p>Release DMA channels for a layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Release the DMA channels associated with <strong>layer</strong>.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_destroy_layers">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_destroy_layers</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_destroy_layers" title="Link to this definition">¶</a><br /></dt>
<dd><p>Destroy all layers</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_layer_request_dma">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_layer_request_dma</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">layer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_layer_request_dma" title="Link to this definition">¶</a><br /></dt>
<dd><p>Request DMA channels for a layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp_layer</span> <span class="pre">*layer</span></code></dt><dd><p>The layer</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Request all DMA engine channels needed by <strong>layer</strong>.</p>
<p><strong>Return</strong></p>
<p>0 on success, or the DMA channel request error otherwise</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_create_layers">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_create_layers</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_create_layers" title="Link to this definition">¶</a><br /></dt>
<dd><p>Create and initialize all layers</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
<p><strong>Return</strong></p>
<p>0 on success, or the DMA channel request error otherwise</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_enable">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_enable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_enable" title="Link to this definition">¶</a><br /></dt>
<dd><p>Enable the display controller</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_disable">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_disable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_disable" title="Link to this definition">¶</a><br /></dt>
<dd><p>Disable the display controller</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
</dl>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_disp_setup_clock">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_disp_setup_clock</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp" title="zynqmp_disp"><span class="n"><span class="pre">zynqmp_disp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">disp</span></span>, <span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">long</span></span><span class="w"> </span><span class="n"><span class="pre">mode_clock</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_disp_setup_clock" title="Link to this definition">¶</a><br /></dt>
<dd><p>Configure the display controller pixel clock rate</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_disp</span> <span class="pre">*disp</span></code></dt><dd><p>Display controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">mode_clock</span></code></dt><dd><p>The pixel clock rate, in Hz</p>
</dd>
</dl>
<p><strong>Return</strong></p>
<p>0 on success, or a negative error clock otherwise</p>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_dp_link_config">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_link_config</span></span></span><a class="headerlink" href="#c.zynqmp_dp_link_config" title="Link to this definition">¶</a><br /></dt>
<dd><p>Common link config between source and sink</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_dp_link_config {
int max_rate;
u8 max_lanes;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">max_rate</span></code></dt><dd><p>maximum link rate</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">max_lanes</span></code></dt><dd><p>maximum number of lanes</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_dp_mode">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_mode</span></span></span><a class="headerlink" href="#c.zynqmp_dp_mode" title="Link to this definition">¶</a><br /></dt>
<dd><p>Configured mode of DisplayPort</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_dp_mode {
const char *fmt;
int pclock;
u8 bw_code;
u8 lane_cnt;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">fmt</span></code></dt><dd><p>format identifier string</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">pclock</span></code></dt><dd><p>pixel clock frequency of current mode</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bw_code</span></code></dt><dd><p>code for bandwidth(link rate)</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">lane_cnt</span></code></dt><dd><p>number of lanes</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_dp_config">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_config</span></span></span><a class="headerlink" href="#c.zynqmp_dp_config" title="Link to this definition">¶</a><br /></dt>
<dd><p>Configuration of DisplayPort from DTS</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_dp_config {
u8 misc0;
u8 misc1;
u8 bpp;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">misc0</span></code></dt><dd><p>misc0 configuration (per DP v1.2 spec)</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">misc1</span></code></dt><dd><p>misc1 configuration (per DP v1.2 spec)</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bpp</span></code></dt><dd><p>bits per pixel</p>
</dd>
</dl>
</div>
<dl class="c enum">
<dt class="sig sig-object c" id="c.test_pattern">
<span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">test_pattern</span></span></span><a class="headerlink" href="#c.test_pattern" title="Link to this definition">¶</a><br /></dt>
<dd><p>Test patterns for test testing</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Constants</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">TEST_VIDEO</span></code></dt><dd><p>Use regular video input</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">TEST_TPS1</span></code></dt><dd><p>Link training symbol pattern TPS1 (/D10.2/)</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">TEST_TPS2</span></code></dt><dd><p>Link training symbol pattern TPS2</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">TEST_TPS3</span></code></dt><dd><p>Link training symbol pattern TPS3 (for HBR2)</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">TEST_SYMBOL_ERROR</span></code></dt><dd><p>Symbol error measurement pattern</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">TEST_PRBS7</span></code></dt><dd><p>Output of the PRBS7 (x^7 + x^6 + 1) polynomial</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">TEST_80BIT_CUSTOM</span></code></dt><dd><p>A custom 80-bit pattern</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">TEST_CP2520</span></code></dt><dd><p>HBR2 compliance eye pattern</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_dp_test">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_test</span></span></span><a class="headerlink" href="#c.zynqmp_dp_test" title="Link to this definition">¶</a><br /></dt>
<dd><p>Configuration for test mode</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_dp_test {
enum test_pattern pattern;
bool enhanced, downspread, active;
u8 custom[10];
u8 train_set[ZYNQMP_DP_MAX_LANES];
u8 bw_code;
u8 link_cnt;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">pattern</span></code></dt><dd><p>The test pattern</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">enhanced</span></code></dt><dd><p>Use enhanced framing</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">downspread</span></code></dt><dd><p>Use SSC</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">active</span></code></dt><dd><p>Whether test mode is active</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">custom</span></code></dt><dd><p>Custom pattern for <code class="docutils literal notranslate"><span class="pre">TEST_80BIT_CUSTOM</span></code></p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">train_set</span></code></dt><dd><p>Voltage/preemphasis settings</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bw_code</span></code></dt><dd><p>Bandwidth code for the link</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">link_cnt</span></code></dt><dd><p>Number of lanes</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_dp_train_set_priv">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_train_set_priv</span></span></span><a class="headerlink" href="#c.zynqmp_dp_train_set_priv" title="Link to this definition">¶</a><br /></dt>
<dd><p>Private data for train_set debugfs files</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_dp_train_set_priv {
struct zynqmp_dp *dp;
int lane;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">lane</span></code></dt><dd><p>The lane for this file</p>
</dd>
</dl>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.zynqmp_dp">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp</span></span></span><a class="headerlink" href="#c.zynqmp_dp" title="Link to this definition">¶</a><br /></dt>
<dd><p>Xilinx DisplayPort core</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Definition</strong>:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct zynqmp_dp {
struct drm_dp_aux aux;
struct drm_bridge bridge;
struct work_struct hpd_work;
struct work_struct hpd_irq_work;
struct completion aux_done;
struct mutex lock;
struct drm_bridge *next_bridge;
struct device *dev;
struct zynqmp_dpsub *dpsub;
void __iomem *iomem;
struct reset_control *reset;
struct phy *phy[ZYNQMP_DP_MAX_LANES];
enum drm_connector_status status;
int irq;
bool enabled;
bool ignore_aux_errors;
bool ignore_hpd;
struct zynqmp_dp_train_set_priv debugfs_train_set[ZYNQMP_DP_MAX_LANES];
struct zynqmp_dp_mode mode;
struct zynqmp_dp_link_config link_config;
struct zynqmp_dp_test test;
struct zynqmp_dp_config config;
u8 dpcd[DP_RECEIVER_CAP_SIZE];
u8 train_set[ZYNQMP_DP_MAX_LANES];
u8 num_lanes;
};
</pre></div>
</div>
<p><strong>Members</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">aux</span></code></dt><dd><p>aux channel</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bridge</span></code></dt><dd><p>DRM bridge for the DP encoder</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">hpd_work</span></code></dt><dd><p>hot plug detection worker</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">hpd_irq_work</span></code></dt><dd><p>hot plug detection IRQ worker</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">aux_done</span></code></dt><dd><p>Completed when we get an AUX reply or timeout</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">lock</span></code></dt><dd><p>Mutex protecting this <code class="xref c c-struct broken_xref docutils literal notranslate"><span class="pre">struct</span> <span class="pre">and</span></code> register access (but not AUX)</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">next_bridge</span></code></dt><dd><p>The downstream bridge</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dev</span></code></dt><dd><p>device structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dpsub</span></code></dt><dd><p>Display subsystem</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">iomem</span></code></dt><dd><p>device I/O memory for register access</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">reset</span></code></dt><dd><p>reset controller</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">phy</span></code></dt><dd><p>PHY handles for DP lanes</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">status</span></code></dt><dd><p>connection status</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">irq</span></code></dt><dd><p>irq</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">enabled</span></code></dt><dd><p>flag to indicate if the device is enabled</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">ignore_aux_errors</span></code></dt><dd><p>If set, AUX errors are suppressed</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">ignore_hpd</span></code></dt><dd><p>If set, HPD events and IRQs are ignored</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">debugfs_train_set</span></code></dt><dd><p>Debugfs private data for <strong>train_set</strong></p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">mode</span></code></dt><dd><p>current mode between IP core and sink device</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">link_config</span></code></dt><dd><p>common link configuration between IP core and sink device</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">test</span></code></dt><dd><p>Configuration for test mode</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">config</span></code></dt><dd><p>IP core configuration from DTS</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dpcd</span></code></dt><dd><p>DP configuration data from currently connected sink device</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">train_set</span></code></dt><dd><p>set of training data</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">num_lanes</span></code></dt><dd><p>number of enabled phy lanes</p>
</dd>
</dl>
</div>
<p><strong>Description</strong></p>
<p><strong>lock</strong> covers the link configuration in this <code class="xref c c-struct broken_xref docutils literal notranslate"><span class="pre">struct</span> <span class="pre">and</span></code> the device’s
registers. It does not cover <strong>aux</strong> or <strong>ignore_aux_errors</strong>. It is not strictly
required for any of the members which are only modified at probe/remove time
(e.g. <strong>dev</strong>).</p>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_phy_init">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_phy_init</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_phy_init" title="Link to this definition">¶</a><br /></dt>
<dd><p>Initialize the phy</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Initialize the phy.</p>
<p><strong>Return</strong></p>
<p>0 if the phy instances are initialized correctly, or the error code
returned from the callee functions.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_phy_exit">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_phy_exit</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_phy_exit" title="Link to this definition">¶</a><br /></dt>
<dd><p>Exit the phy</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Exit the phy.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_phy_probe">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_phy_probe</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_phy_probe" title="Link to this definition">¶</a><br /></dt>
<dd><p>Probe the PHYs</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Probe PHYs for all lanes. Less PHYs may be available than the number of
lanes, which is not considered an error as long as at least one PHY is
found. The caller can check dp->num_lanes to check how many PHYs were found.</p>
<p><strong>Return</strong></p>
<ul>
<li><p>0 - Success</p></li>
<li><dl class="option-list">
<dt><kbd><span class="option">-E<var>NXIO</var></span></kbd></dt>
<dd><ul class="simple">
<li><p>No PHY found</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="option-list">
<dt><kbd><span class="option">-E<var>PROBE_DEFER</var></span></kbd></dt>
<dd><ul class="simple">
<li><p>Probe deferral requested</p></li>
</ul>
</dd>
</dl>
</li>
<li><p>Other negative value - PHY retrieval failure</p></li>
</ul>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_phy_ready">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_phy_ready</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_phy_ready" title="Link to this definition">¶</a><br /></dt>
<dd><p>Check if PHY is ready</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Check if PHY is ready. If PHY is not ready, wait 1ms to check for 100 times.
This amount of delay was suggested by IP designer.</p>
<p><strong>Return</strong></p>
<p>0 if PHY is ready, or -ENODEV if PHY is not ready.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_max_rate">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_max_rate</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">link_rate</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="n"><span class="pre">lane_num</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="n"><span class="pre">bpp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_max_rate" title="Link to this definition">¶</a><br /></dt>
<dd><p>Calculate and return available max pixel clock</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">link_rate</span></code></dt><dd><p>link rate (Kilo-bytes / sec)</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">lane_num</span></code></dt><dd><p>number of lanes</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">bpp</span></code></dt><dd><p>bits per pixel</p>
</dd>
</dl>
<p><strong>Return</strong></p>
<p>max pixel clock (KHz) supported by current link config.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_mode_configure">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_mode_configure</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">pclock</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="n"><span class="pre">current_bw</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_mode_configure" title="Link to this definition">¶</a><br /></dt>
<dd><p>Configure the link values</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">pclock</span></code></dt><dd><p>pixel clock for requested display mode</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">current_bw</span></code></dt><dd><p>current link rate</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Find the link configuration values, rate and lane count for requested pixel
clock <strong>pclock</strong>. The <strong>pclock</strong> is stored in the mode to be used in other
functions later. The returned rate is downshifted from the current rate
<strong>current_bw</strong>.</p>
<p><strong>Return</strong></p>
<p>Current link rate code, or -EINVAL.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_adjust_train">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_adjust_train</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="n"><span class="pre">link_status</span></span><span class="p"><span class="pre">[</span></span><span class="n"><span class="pre">DP_LINK_STATUS_SIZE</span></span><span class="p"><span class="pre">]</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_adjust_train" title="Link to this definition">¶</a><br /></dt>
<dd><p>Adjust train values</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">link_status[DP_LINK_STATUS_SIZE]</span></code></dt><dd><p>link status from sink which contains requested training values</p>
</dd>
</dl>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_update_vs_emph">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_update_vs_emph</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">train_set</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_update_vs_emph" title="Link to this definition">¶</a><br /></dt>
<dd><p>Update the training values</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">*train_set</span></code></dt><dd><p>A set of training values</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Update the training values based on the request from sink. The mapped values
are predefined, and values(vs, pe, pc) are from the device manual.</p>
<p><strong>Return</strong></p>
<p>0 if vs and emph are updated successfully, or the error code returned
by <a class="reference internal" href="drm-kms-helpers.html#c.drm_dp_dpcd_write" title="drm_dp_dpcd_write"><code class="xref c c-func docutils literal notranslate"><span class="pre">drm_dp_dpcd_write()</span></code></a>.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_link_train_cr">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_link_train_cr</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_link_train_cr" title="Link to this definition">¶</a><br /></dt>
<dd><p>Train clock recovery</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Return</strong></p>
<p>0 if clock recovery train is done successfully, or corresponding
error code.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_link_train_ce">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_link_train_ce</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_link_train_ce" title="Link to this definition">¶</a><br /></dt>
<dd><p>Train channel equalization</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Return</strong></p>
<p>0 if channel equalization train is done successfully, or
corresponding error code.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_setup">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_setup</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="n"><span class="pre">bw_code</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="n"><span class="pre">lane_cnt</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">enhanced</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">downspread</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_setup" title="Link to this definition">¶</a><br /></dt>
<dd><p>Set up major link parameters</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">bw_code</span></code></dt><dd><p>The link bandwidth as a multiple of 270 MHz</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">lane_cnt</span></code></dt><dd><p>The number of lanes to use</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bool</span> <span class="pre">enhanced</span></code></dt><dd><p>Use enhanced framing</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bool</span> <span class="pre">downspread</span></code></dt><dd><p>Enable spread-spectrum clocking</p>
</dd>
</dl>
<p><strong>Return</strong></p>
<p>0 on success, or -errno on failure</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_train">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_train</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_train" title="Link to this definition">¶</a><br /></dt>
<dd><p>Train the link</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Return</strong></p>
<p>0 if all trains are done successfully, or corresponding error code.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_train_loop">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_train_loop</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_train_loop" title="Link to this definition">¶</a><br /></dt>
<dd><p>Downshift the link rate during training</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Train the link by downshifting the link rate if training is not successful.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_aux_cmd_submit">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_aux_cmd_submit</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span>, <span class="n"><span class="pre">u32</span></span><span class="w"> </span><span class="n"><span class="pre">cmd</span></span>, <span class="n"><span class="pre">u16</span></span><span class="w"> </span><span class="n"><span class="pre">addr</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">buf</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="n"><span class="pre">bytes</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">reply</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_aux_cmd_submit" title="Link to this definition">¶</a><br /></dt>
<dd><p>Submit aux command</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u32</span> <span class="pre">cmd</span></code></dt><dd><p>aux command</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u16</span> <span class="pre">addr</span></code></dt><dd><p>aux address</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">*buf</span></code></dt><dd><p>buffer for command data</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">bytes</span></code></dt><dd><p>number of bytes for <strong>buf</strong></p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">*reply</span></code></dt><dd><p>reply code to be returned</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Submit an aux command. All aux related commands, native or i2c aux
read/write, are submitted through this function. The function is mapped to
the transfer function of <a class="reference internal" href="drm-kms-helpers.html#c.drm_dp_aux" title="drm_dp_aux"><code class="xref c c-struct docutils literal notranslate"><span class="pre">struct</span> <span class="pre">drm_dp_aux</span></code></a>. This function involves in
multiple register reads/writes, thus synchronization is needed, and it is
done by drm_dp_helper using <strong>hw_mutex</strong>. The calling thread goes into sleep
if there’s no immediate reply to the command submission. The reply code is
returned at <strong>reply</strong> if <strong>reply</strong> != NULL.</p>
<p><strong>Return</strong></p>
<p>0 if the command is submitted properly, or corresponding error code:
-EBUSY when there is any request already being processed
-ETIMEDOUT when receiving reply is timed out
-EIO when received bytes are less than requested</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_aux_init">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_aux_init</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_aux_init" title="Link to this definition">¶</a><br /></dt>
<dd><p>Initialize and register the DP AUX</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Program the AUX clock divider and filter and register the DP AUX adapter.</p>
<p><strong>Return</strong></p>
<p>0 on success, error value otherwise</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_aux_cleanup">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_aux_cleanup</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_aux_cleanup" title="Link to this definition">¶</a><br /></dt>
<dd><p>Cleanup the DP AUX</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Unregister the DP AUX adapter.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_update_misc">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_update_misc</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_update_misc" title="Link to this definition">¶</a><br /></dt>
<dd><p>Write the misc registers</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>The misc register values are stored in the structure, and this
function applies the values into the registers.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_set_format">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_set_format</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="drm-kms.html#c.drm_display_info" title="drm_display_info"><span class="n"><span class="pre">drm_display_info</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">info</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="n"><span class="pre">zynqmp_dpsub_format</span></span><span class="w"> </span><span class="n"><span class="pre">format</span></span>, <span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">bpc</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_set_format" title="Link to this definition">¶</a><br /></dt>
<dd><p>Set the input format</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">const</span> <span class="pre">struct</span> <span class="pre">drm_display_info</span> <span class="pre">*info</span></code></dt><dd><p>Display info</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">enum</span> <span class="pre">zynqmp_dpsub_format</span> <span class="pre">format</span></code></dt><dd><p>input format</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">unsigned</span> <span class="pre">int</span> <span class="pre">bpc</span></code></dt><dd><p>bits per component</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Update misc register values based on input <strong>format</strong> and <strong>bpc</strong>.</p>
<p><strong>Return</strong></p>
<p>0 on success, or -EINVAL.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_encoder_mode_set_transfer_unit">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_encoder_mode_set_transfer_unit</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="drm-kms.html#c.drm_display_mode" title="drm_display_mode"><span class="n"><span class="pre">drm_display_mode</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">mode</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_encoder_mode_set_transfer_unit" title="Link to this definition">¶</a><br /></dt>
<dd><p>Set the transfer unit values</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">const</span> <span class="pre">struct</span> <span class="pre">drm_display_mode</span> <span class="pre">*mode</span></code></dt><dd><p>requested display mode</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Set the transfer unit, and calculate all transfer unit size related values.
Calculation is based on DP and IP core specification.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_encoder_mode_set_stream">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_encoder_mode_set_stream</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="drm-kms.html#c.drm_display_mode" title="drm_display_mode"><span class="n"><span class="pre">drm_display_mode</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">mode</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_encoder_mode_set_stream" title="Link to this definition">¶</a><br /></dt>
<dd><p>Configure the main stream</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">const</span> <span class="pre">struct</span> <span class="pre">drm_display_mode</span> <span class="pre">*mode</span></code></dt><dd><p>requested display mode</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Configure the main stream based on the requested mode <strong>mode</strong>. Calculation is
based on IP core specification.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_disp_connected_live_layer">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_disp_layer" title="zynqmp_disp_layer"><span class="n"><span class="pre">zynqmp_disp_layer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_disp_connected_live_layer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_disp_connected_live_layer" title="Link to this definition">¶</a><br /></dt>
<dd><p>Return the first connected live layer</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Return</strong></p>
<p>The first connected live display layer or NULL if none of the live
layers are connected.</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_set_test_pattern">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_set_test_pattern</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="#c.test_pattern" title="test_pattern"><span class="n"><span class="pre">test_pattern</span></span></a><span class="w"> </span><span class="n"><span class="pre">pattern</span></span>, <span class="n"><span class="pre">u8</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">custom</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_set_test_pattern" title="Link to this definition">¶</a><br /></dt>
<dd><p>Configure the link for a test pattern</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">enum</span> <span class="pre">test_pattern</span> <span class="pre">pattern</span></code></dt><dd><p>The test pattern to configure</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">*const</span> <span class="pre">custom</span></code></dt><dd><p>The custom pattern to use if <strong>pattern</strong> is <code class="docutils literal notranslate"><span class="pre">TEST_80BIT_CUSTOM</span></code></p>
</dd>
</dl>
<p><strong>Return</strong></p>
<p>0 on success, or negative errno on (DPCD) failure</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_enable_vblank">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_enable_vblank</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_enable_vblank" title="Link to this definition">¶</a><br /></dt>
<dd><p>Enable vblank</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Enable vblank interrupt</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dp_disable_vblank">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dp_disable_vblank</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dp" title="zynqmp_dp"><span class="n"><span class="pre">zynqmp_dp</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dp_disable_vblank" title="Link to this definition">¶</a><br /></dt>
<dd><p>Disable vblank</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dp</span> <span class="pre">*dp</span></code></dt><dd><p>DisplayPort IP core structure</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>Disable vblank interrupt</p>
</div>
<dl class="c function">
<dt class="sig sig-object c" id="c.zynqmp_dpsub_drm_handle_vblank">
<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">zynqmp_dpsub_drm_handle_vblank</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><a class="reference internal" href="#c.zynqmp_dpsub" title="zynqmp_dpsub"><span class="n"><span class="pre">zynqmp_dpsub</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dpsub</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.zynqmp_dpsub_drm_handle_vblank" title="Link to this definition">¶</a><br /></dt>
<dd><p>Handle the vblank event</p>
</dd></dl>
<div class="kernelindent docutils container">
<p><strong>Parameters</strong></p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">zynqmp_dpsub</span> <span class="pre">*dpsub</span></code></dt><dd><p>DisplayPort subsystem</p>
</dd>
</dl>
<p><strong>Description</strong></p>
<p>This function handles the vblank interrupt, and sends an event to
CRTC object. This will be called by the DP vblank interrupt handler.</p>
</div>
</section>
</section>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
©The kernel development community.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
& <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
|
<a href="../_sources/gpu/zynqmp.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>