<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/gpu/drm/bridge/analogix, branch linux-4.7.y</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=linux-4.7.y</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=linux-4.7.y'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2016-04-05T02:13:10+00:00</updated>
<entry>
<title>drm: bridge: analogix/dp: Fix the possible dead lock in bridge disable time</title>
<updated>2016-04-05T02:13:10+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-02-15T11:11:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=7b4b7a8db439dca4342a0424b3d99d878a4e5a12'/>
<id>urn:sha1:7b4b7a8db439dca4342a0424b3d99d878a4e5a12</id>
<content type='text'>
It may caused a dead lock if we flush the hpd work in bridge disable time.

The normal flow would like:
  IN --&gt; DRM IOCTL
        1. Acquire crtc_ww_class_mutex (DRM IOCTL)
  IN --&gt; analogix_dp_bridge
        2. Acquire hpd work lock (Flush hpd work)
        3. HPD work already in idle, no need to run the work function.
  OUT &lt;-- analogix_dp_bridge
  OUT &lt;-- DRM IOCTL

The dead lock flow would like:
  IN --&gt; DRM IOCTL
        1. Acquire crtc_ww_class_mutex (DRM IOCTL)
  IN --&gt; analogix_dp_bridge
        2. Acquire hpd work lock (Flush hpd work)
  IN --&gt; analogix_dp_hotplug
  IN --&gt; drm_helper_hpd_irq_event
        3. Acquire mode_config lock (This lock already have been acquired in previous step 1)
** Dead Lock Now **

It's wrong to flush the hpd work in bridge-&gt;disable time, I guess the
original code just want to ensure the delay work must be finish before
encoder disabled.

The flush work in bridge disable time is try to ensure the HPD event
won't be missed before display card disabled, actually we can take a
fast respond way(interrupt thread) to update DRM HPD event to fix the
delay update and possible dead lock.

Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Tested-by: Javier Martinez Canillas &lt;javier@osg.samsung.com&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
<entry>
<title>drm: bridge: analogix/dp: add panel prepare/unprepare in suspend/resume time</title>
<updated>2016-04-05T02:13:10+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-02-15T11:11:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=211f276ed3d96e964d2d1106a198c7f4a4b3f4c0'/>
<id>urn:sha1:211f276ed3d96e964d2d1106a198c7f4a4b3f4c0</id>
<content type='text'>
Turn off the panel power in suspend time would help to reduce
power waste.

Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Tested-by: Javier Martinez Canillas &lt;javier@osg.samsung.com&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
<entry>
<title>drm: bridge: analogix/dp: add edid modes parse in get_modes method</title>
<updated>2016-04-05T02:13:09+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-02-15T11:11:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=398a39953493e859d22ac4bece0f4542a3797053'/>
<id>urn:sha1:398a39953493e859d22ac4bece0f4542a3797053</id>
<content type='text'>
Display Port monitor could support kinds of mode which indicate
in monitor edid, not just one single display resolution which
defined in panel or devivetree property display timing.

Note: Gustavo Padovan try to remove the controller and phy
power on function in bind time at bellow commit:
	drm/exynos: do not start enabling DP at bind() phase

But for now driver need to read edid message in .get_modes()
function, so controller must be inited in bind time, so we
need to add controller init back.

Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Tested-by: Javier Martinez Canillas &lt;javier@osg.samsung.com&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
<entry>
<title>drm: bridge: analogix/dp: move hpd detect to connector detect function</title>
<updated>2016-04-05T02:13:08+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-02-15T11:11:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=2b77a2918c5d7b0b6bc2f8b35ddc299cf9bfe401'/>
<id>urn:sha1:2b77a2918c5d7b0b6bc2f8b35ddc299cf9bfe401</id>
<content type='text'>
This change just make a little clean to make code more like
drm core expect, move hdp detect code from bridge-&gt;enable(),
and place them into connector-&gt;detect().

Note: Gustavo Padovan try to remove the controller and phy
power on function in bind time at bellow commit:
	drm/exynos: do not start enabling DP at bind() phase

But for now the connector status don't hardcode to connected,
need to operate dp phy in .detect function, so we need to revert
parts if Gustavo Padovan's changes, add phy poweron
function in bind time.

Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Tested-by: Javier Martinez Canillas &lt;javier@osg.samsung.com&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
<entry>
<title>drm: bridge: analogix/dp: try force hpd after plug in lookup failed</title>
<updated>2016-04-05T02:13:07+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-02-15T11:11:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5cff007c58b7103a7d6bb203a74eb3eb416c10e0'/>
<id>urn:sha1:5cff007c58b7103a7d6bb203a74eb3eb416c10e0</id>
<content type='text'>
Some edp screen do not have hpd signal, so we can't just return
failed when hpd plug in detect failed.

This is an hardware property, so we need add a devicetree property
"analogix,need-force-hpd" to indicate this sutiation.

Acked-by: Rob Herring &lt;robh@kernel.org&gt;
Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Tested-by: Javier Martinez Canillas &lt;javier@osg.samsung.com&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
<entry>
<title>drm: bridge: analogix/dp: add max link rate and lane count limit for RK3288</title>
<updated>2016-04-05T02:13:07+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-02-15T11:11:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=0d0abd894ead85d20d7febe603f570d4fdd8111a'/>
<id>urn:sha1:0d0abd894ead85d20d7febe603f570d4fdd8111a</id>
<content type='text'>
There are some IP limit on rk3288 that only support 4 physical lanes
of 2.7/1.6 Gbps/lane, so seprate them out by device_type flag.

Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
<entry>
<title>drm: bridge: analogix/dp: add some rk3288 special registers setting</title>
<updated>2016-04-05T02:13:06+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-02-15T11:10:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=bcec20fd5ad63ea03427c40027b33c7fd995c8bc'/>
<id>urn:sha1:bcec20fd5ad63ea03427c40027b33c7fd995c8bc</id>
<content type='text'>
RK3288 need some special registers setting, we can separate
them out by the dev_type of plat_data.

Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
<entry>
<title>drm: bridge: analogix/dp: dynamic parse sync_pol &amp; interlace &amp; dynamic_range</title>
<updated>2016-04-05T02:13:02+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-02-15T11:10:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=793ce4eb84ea2f2c3ebb97aab1ba8a4ce0561812'/>
<id>urn:sha1:793ce4eb84ea2f2c3ebb97aab1ba8a4ce0561812</id>
<content type='text'>
Both hsync/vsync polarity and interlace mode can be parsed from
drm display mode, and dynamic_range and ycbcr_coeff can be judge
by the video code.

But presumably Exynos still relies on the DT properties, so take
good use of mode_fixup() in to achieve the compatibility hacks.

Reviewed-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Tested-by: Javier Martinez Canillas &lt;javier@osg.samsung.com&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
<entry>
<title>drm: bridge: analogix/dp: remove duplicate configuration of link rate and link count</title>
<updated>2016-04-05T02:13:02+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-02-15T11:10:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=40fc7ce7db770e9e05032be5eefc183690afb5b8'/>
<id>urn:sha1:40fc7ce7db770e9e05032be5eefc183690afb5b8</id>
<content type='text'>
link_rate and lane_count already configured in analogix_dp_set_link_train(),
so we don't need to config those repeatly after training finished, just
remove them out.

Beside Display Port 1.2 already support 5.4Gbps link rate, the maximum sets
would change from {1.62Gbps, 2.7Gbps} to {1.62Gbps, 2.7Gbps, 5.4Gbps}.

Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Tested-by: Javier Martinez Canillas &lt;javier@osg.samsung.com&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
<entry>
<title>drm: bridge: analogix/dp: fix some obvious code style</title>
<updated>2016-04-05T02:13:01+00:00</updated>
<author>
<name>Yakir Yang</name>
<email>ykk@rock-chips.com</email>
</author>
<published>2016-03-29T01:57:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=bcbb7033acf9cea100fb9ea6cd9ff5a7a279d16a'/>
<id>urn:sha1:bcbb7033acf9cea100fb9ea6cd9ff5a7a279d16a</id>
<content type='text'>
Fix some obvious alignment problems, like alignment and line
over 80 characters problems, make this easy to be maintained
later.

Acked-by: Jingoo Han &lt;jingoohan1@gmail.com&gt;
Reviewed-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Tested-by: Caesar Wang &lt;wxt@rock-chips.com&gt;
Tested-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Tested-by: Javier Martinez Canillas &lt;javier@osg.samsung.com&gt;
Signed-off-by: Yakir Yang &lt;ykk@rock-chips.com&gt;
</content>
</entry>
</feed>
