<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/gpu/drm/sun4i, branch v5.5</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>drm/sun4i: tcon: Set RGB DCLK min. divider based on hardware model</title>
<updated>2020-01-07T14:56:40+00:00</updated>
<author>
<name>Chen-Yu Tsai</name>
<email>wens@csie.org</email>
</author>
<published>2020-01-07T07:01:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=4396393fb96449c56423fb4b351f76e45a6bcaf6'/>
<id>4396393fb96449c56423fb4b351f76e45a6bcaf6</id>
<content type='text'>
In commit 0b8e7bbde5e7 ("drm/sun4i: tcon: Set min division of TCON0_DCLK
to 1.") it was assumed that all TCON variants support a minimum divider
of 1 if only DCLK was used.

However, the oldest generation of hardware only supports minimum divider
of 4 if only DCLK is used. If a divider of 1 was used on this old
hardware, some scrolling artifact would appear. A divider of 2 seemed
OK, but a divider of 3 had artifacts as well.

Set the minimum divider when outputing to parallel RGB based on the
hardware model, with a minimum of 4 for the oldest (A10/A10s/A13/A20)
hardware, and a minimum of 1 for the rest. A value is not set for the
TCON variants lacking channel 0.

This fixes the scrolling artifacts seen on my A13 tablet.

Fixes: 0b8e7bbde5e7 ("drm/sun4i: tcon: Set min division of TCON0_DCLK to 1.")
Cc: &lt;stable@vger.kernel.org&gt; # 5.4.x
Signed-off-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20200107070113.28951-1-wens@kernel.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In commit 0b8e7bbde5e7 ("drm/sun4i: tcon: Set min division of TCON0_DCLK
to 1.") it was assumed that all TCON variants support a minimum divider
of 1 if only DCLK was used.

However, the oldest generation of hardware only supports minimum divider
of 4 if only DCLK is used. If a divider of 1 was used on this old
hardware, some scrolling artifact would appear. A divider of 2 seemed
OK, but a divider of 3 had artifacts as well.

Set the minimum divider when outputing to parallel RGB based on the
hardware model, with a minimum of 4 for the oldest (A10/A10s/A13/A20)
hardware, and a minimum of 1 for the rest. A value is not set for the
TCON variants lacking channel 0.

This fixes the scrolling artifacts seen on my A13 tablet.

Fixes: 0b8e7bbde5e7 ("drm/sun4i: tcon: Set min division of TCON0_DCLK to 1.")
Cc: &lt;stable@vger.kernel.org&gt; # 5.4.x
Signed-off-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20200107070113.28951-1-wens@kernel.org
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/sun4i: hdmi: Remove duplicate cleanup calls</title>
<updated>2019-12-18T22:17:32+00:00</updated>
<author>
<name>Stefan Mavrodiev</name>
<email>stefan@olimex.com</email>
</author>
<published>2019-12-17T12:46:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=57177d214ee0816c4436c23d6c933ccb32c571f1'/>
<id>57177d214ee0816c4436c23d6c933ccb32c571f1</id>
<content type='text'>
When the HDMI unbinds drm_connector_cleanup() and drm_encoder_cleanup()
are called. This also happens when the connector and the encoder are
destroyed. This double call triggers a NULL pointer exception.

The patch fixes this by removing the cleanup calls in the unbind
function.

Cc: &lt;stable@vger.kernel.org&gt;
Fixes: 9c5681011a0c ("drm/sun4i: Add HDMI support")
Signed-off-by: Stefan Mavrodiev &lt;stefan@olimex.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191217124632.20820-1-stefan@olimex.com
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the HDMI unbinds drm_connector_cleanup() and drm_encoder_cleanup()
are called. This also happens when the connector and the encoder are
destroyed. This double call triggers a NULL pointer exception.

The patch fixes this by removing the cleanup calls in the unbind
function.

Cc: &lt;stable@vger.kernel.org&gt;
Fixes: 9c5681011a0c ("drm/sun4i: Add HDMI support")
Signed-off-by: Stefan Mavrodiev &lt;stefan@olimex.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191217124632.20820-1-stefan@olimex.com
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'drm-next-2019-11-27' of git://anongit.freedesktop.org/drm/drm</title>
<updated>2019-11-28T01:45:48+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2019-11-28T01:45:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a6ed68d6468bd5a3da78a103344ded1435fed57a'/>
<id>a6ed68d6468bd5a3da78a103344ded1435fed57a</id>
<content type='text'>
Pull drm updates from Dave Airlie:
 "Lots of stuff in here, though it hasn't been too insane this merge
  apart from dealing with the security fun.

  uapi:
   - export different colorspace properties on DP vs HDMI
   - new fourcc for ARM 16x16 block format
   - syncobj: allow querying last submitted timeline value
   - DRM_FORMAT_BIG_ENDIAN defined as unsigned

  core:
   - allow using gem vma manager in ttm
   - connector/encoder/bridge doc fixes
   - allow more than 3 encoders for a connector
   - displayport mst suspend/resume reprobing support
   - vram lazy unmapping, uniform vram mm and gem vram
   - edid cleanups + AVI informframe bar info
   - displayport helpers - dpcd parser added

  dp_cec:
   - Allow a connector to be associated with a cec device

  ttm:
   - pipelining with no_gpu_wait fix
   - always keep BOs on the LRU

  sched:
   - allow free_job routine to sleep

  i915:
   - Block userptr from mappable GTT
   - i915 perf uapi versioning
   - OA stream dynamic reconfiguration
   - make context persistence optional
   - introduce DRM_I915_UNSTABLE Kconfig
   - add fake lmem testing under unstable
   - BT.2020 support for DP MSA
   - struct mutex elimination
   - Tigerlake display/PLL/power management improvements
   - Jasper Lake PCH support
   - refactor PMU for multiple GPUs
   - Icelake firmware update
   - Split out vga + switcheroo code

  amdgpu:
   - implement dma-buf import/export without helpers
   - vega20 RAS enablement
   - DC i2c over aux fixes
   - renoir GPU reset
   - DC HDCP support
   - BACO support for CI/VI asics
   - MSI-X support
   - Arcturus EEPROM support
   - Arcturus VCN encode support
   - VCN dynamic powergating on RV/RV2

  amdkfd:
   - add navi12/14/renoir support to kfd

  radeon:
   - SI dpm fix ported from amdgpu
   - fix bad DMA on ppc platforms

  gma500:
   - memory leak fixes

  qxl:
   - convert to new gem mmap

  exynos:
   - build warning fix

  komeda:
   - add aclk sysfs attribute

  v3d:
   - userspace cleanup uapi change

  i810:
   - fix for underflow in dispatch ioctls

  ast:
   - refactor show_cursor

  mgag200:
   - refactor show_cursor

  arcgpu:
   - encoder finding improvements

  mediatek:
   - mipi_tx, dsi and partial crtc support for MT8183 SoC
   - rotation support

  meson:
   - add suspend/resume support

  omap:
   - misc refactors

  tegra:
   - DisplayPort support for Tegra 210, 186 and 194.
   - IOMMU-backed DMA API fixes

  panfrost:
   - fix lockdep issue
   - simplify devfreq integration

  rcar-du:
   - R8A774B1 SoC support
   - fixes for H2 ES2.0

  sun4i:
   - vcc-dsi regulator support

  virtio-gpu:
   - vmexit vs spinlock fix
   - move to gem shmem helpers
   - handle large command buffers with cma"

* tag 'drm-next-2019-11-27' of git://anongit.freedesktop.org/drm/drm: (1855 commits)
  drm/amdgpu: invalidate mmhub semaphore workaround in gmc9/gmc10
  drm/amdgpu: initialize vm_inv_eng0_sem for gfxhub and mmhub
  drm/amd/amdgpu/sriov skip RLCG s/r list for arcturus VF.
  drm/amd/amdgpu/sriov temporarily skip ras,dtm,hdcp for arcturus VF
  drm/amdgpu/gfx10: re-init clear state buffer after gpu reset
  merge fix for "ftrace: Rework event_create_dir()"
  drm/amdgpu: Update Arcturus golden registers
  drm/amdgpu/gfx10: fix out-of-bound mqd_backup array access
  drm/amdgpu/gfx10: explicitly wait for cp idle after halt/unhalt
  Revert "drm/amd/display: enable S/G for RAVEN chip"
  drm/amdgpu: disable gfxoff on original raven
  drm/amdgpu: remove experimental flag for Navi14
  drm/amdgpu: disable gfxoff when using register read interface
  drm/amdgpu/powerplay: properly set PP_GFXOFF_MASK (v2)
  drm/amdgpu: fix bad DMA from INTERRUPT_CNTL2
  drm/radeon: fix bad DMA from INTERRUPT_CNTL2
  drm/amd/display: Fix debugfs on MST connectors
  drm/amdgpu/nv: add asic func for fetching vbios from rom directly
  drm/amdgpu: put flush_delayed_work at first
  drm/amdgpu/vcn2.5: fix the enc loop with hw fini
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull drm updates from Dave Airlie:
 "Lots of stuff in here, though it hasn't been too insane this merge
  apart from dealing with the security fun.

  uapi:
   - export different colorspace properties on DP vs HDMI
   - new fourcc for ARM 16x16 block format
   - syncobj: allow querying last submitted timeline value
   - DRM_FORMAT_BIG_ENDIAN defined as unsigned

  core:
   - allow using gem vma manager in ttm
   - connector/encoder/bridge doc fixes
   - allow more than 3 encoders for a connector
   - displayport mst suspend/resume reprobing support
   - vram lazy unmapping, uniform vram mm and gem vram
   - edid cleanups + AVI informframe bar info
   - displayport helpers - dpcd parser added

  dp_cec:
   - Allow a connector to be associated with a cec device

  ttm:
   - pipelining with no_gpu_wait fix
   - always keep BOs on the LRU

  sched:
   - allow free_job routine to sleep

  i915:
   - Block userptr from mappable GTT
   - i915 perf uapi versioning
   - OA stream dynamic reconfiguration
   - make context persistence optional
   - introduce DRM_I915_UNSTABLE Kconfig
   - add fake lmem testing under unstable
   - BT.2020 support for DP MSA
   - struct mutex elimination
   - Tigerlake display/PLL/power management improvements
   - Jasper Lake PCH support
   - refactor PMU for multiple GPUs
   - Icelake firmware update
   - Split out vga + switcheroo code

  amdgpu:
   - implement dma-buf import/export without helpers
   - vega20 RAS enablement
   - DC i2c over aux fixes
   - renoir GPU reset
   - DC HDCP support
   - BACO support for CI/VI asics
   - MSI-X support
   - Arcturus EEPROM support
   - Arcturus VCN encode support
   - VCN dynamic powergating on RV/RV2

  amdkfd:
   - add navi12/14/renoir support to kfd

  radeon:
   - SI dpm fix ported from amdgpu
   - fix bad DMA on ppc platforms

  gma500:
   - memory leak fixes

  qxl:
   - convert to new gem mmap

  exynos:
   - build warning fix

  komeda:
   - add aclk sysfs attribute

  v3d:
   - userspace cleanup uapi change

  i810:
   - fix for underflow in dispatch ioctls

  ast:
   - refactor show_cursor

  mgag200:
   - refactor show_cursor

  arcgpu:
   - encoder finding improvements

  mediatek:
   - mipi_tx, dsi and partial crtc support for MT8183 SoC
   - rotation support

  meson:
   - add suspend/resume support

  omap:
   - misc refactors

  tegra:
   - DisplayPort support for Tegra 210, 186 and 194.
   - IOMMU-backed DMA API fixes

  panfrost:
   - fix lockdep issue
   - simplify devfreq integration

  rcar-du:
   - R8A774B1 SoC support
   - fixes for H2 ES2.0

  sun4i:
   - vcc-dsi regulator support

  virtio-gpu:
   - vmexit vs spinlock fix
   - move to gem shmem helpers
   - handle large command buffers with cma"

* tag 'drm-next-2019-11-27' of git://anongit.freedesktop.org/drm/drm: (1855 commits)
  drm/amdgpu: invalidate mmhub semaphore workaround in gmc9/gmc10
  drm/amdgpu: initialize vm_inv_eng0_sem for gfxhub and mmhub
  drm/amd/amdgpu/sriov skip RLCG s/r list for arcturus VF.
  drm/amd/amdgpu/sriov temporarily skip ras,dtm,hdcp for arcturus VF
  drm/amdgpu/gfx10: re-init clear state buffer after gpu reset
  merge fix for "ftrace: Rework event_create_dir()"
  drm/amdgpu: Update Arcturus golden registers
  drm/amdgpu/gfx10: fix out-of-bound mqd_backup array access
  drm/amdgpu/gfx10: explicitly wait for cp idle after halt/unhalt
  Revert "drm/amd/display: enable S/G for RAVEN chip"
  drm/amdgpu: disable gfxoff on original raven
  drm/amdgpu: remove experimental flag for Navi14
  drm/amdgpu: disable gfxoff when using register read interface
  drm/amdgpu/powerplay: properly set PP_GFXOFF_MASK (v2)
  drm/amdgpu: fix bad DMA from INTERRUPT_CNTL2
  drm/radeon: fix bad DMA from INTERRUPT_CNTL2
  drm/amd/display: Fix debugfs on MST connectors
  drm/amdgpu/nv: add asic func for fetching vbios from rom directly
  drm/amdgpu: put flush_delayed_work at first
  drm/amdgpu/vcn2.5: fix the enc loop with hw fini
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/sun4i: tcon: Set min division of TCON0_DCLK to 1.</title>
<updated>2019-11-13T14:20:33+00:00</updated>
<author>
<name>Yunhao Tian</name>
<email>t123yh@outlook.com</email>
</author>
<published>2019-11-13T13:27:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0b8e7bbde5e7e2c419567e1ee29587dae3b78ee3'/>
<id>0b8e7bbde5e7e2c419567e1ee29587dae3b78ee3</id>
<content type='text'>
The datasheet of V3s (and various other chips) wrote
that TCON0_DCLK_DIV can be &gt;= 1 if only dclk is used,
and must &gt;= 6 if dclk1 or dclk2 is used. As currently
neither dclk1 nor dclk2 is used (no writes to these
bits), let's set minimal division to 1.

If this minimal division is 6, some common dot clock
frequencies can't be produced (e.g. 30MHz will not be
possible and will fallback to 25MHz), which is
obviously not an expected behaviour.

Signed-off-by: Yunhao Tian &lt;t123yh@outlook.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://lore.kernel.org/linux-arm-kernel/MN2PR08MB57905AD8A00C08DA219377C989760@MN2PR08MB5790.namprd08.prod.outlook.com/
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The datasheet of V3s (and various other chips) wrote
that TCON0_DCLK_DIV can be &gt;= 1 if only dclk is used,
and must &gt;= 6 if dclk1 or dclk2 is used. As currently
neither dclk1 nor dclk2 is used (no writes to these
bits), let's set minimal division to 1.

If this minimal division is 6, some common dot clock
frequencies can't be produced (e.g. 30MHz will not be
possible and will fallback to 25MHz), which is
obviously not an expected behaviour.

Signed-off-by: Yunhao Tian &lt;t123yh@outlook.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://lore.kernel.org/linux-arm-kernel/MN2PR08MB57905AD8A00C08DA219377C989760@MN2PR08MB5790.namprd08.prod.outlook.com/
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/sun4i: Enable DRM InfoFrame support on H6</title>
<updated>2019-10-10T10:50:03+00:00</updated>
<author>
<name>Jonas Karlman</name>
<email>jonas@kwiboo.se</email>
</author>
<published>2019-10-07T19:21:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c8ff64053757a71c9d963c091da0ef4cd517c9f9'/>
<id>c8ff64053757a71c9d963c091da0ef4cd517c9f9</id>
<content type='text'>
This patch enables Dynamic Range and Mastering InfoFrame on H6.

Cc: Maxime Ripard &lt;maxime.ripard@bootlin.com&gt;
Cc: Jernej Skrabec &lt;jernej.skrabec@siol.net&gt;
Signed-off-by: Jonas Karlman &lt;jonas@kwiboo.se&gt;
Reviewed-by: Andrzej Hajda &lt;a.hajda@samsung.com&gt;
Signed-off-by: Neil Armstrong &lt;narmstrong@baylibre.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/HE1PR06MB40119DBC0DAE7BA251DF7074AC9B0@HE1PR06MB4011.eurprd06.prod.outlook.com
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch enables Dynamic Range and Mastering InfoFrame on H6.

Cc: Maxime Ripard &lt;maxime.ripard@bootlin.com&gt;
Cc: Jernej Skrabec &lt;jernej.skrabec@siol.net&gt;
Signed-off-by: Jonas Karlman &lt;jonas@kwiboo.se&gt;
Reviewed-by: Andrzej Hajda &lt;a.hajda@samsung.com&gt;
Signed-off-by: Neil Armstrong &lt;narmstrong@baylibre.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/HE1PR06MB40119DBC0DAE7BA251DF7074AC9B0@HE1PR06MB4011.eurprd06.prod.outlook.com
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/sun4i: dsi: Fix video start delay computation</title>
<updated>2019-10-08T05:56:41+00:00</updated>
<author>
<name>Jagan Teki</name>
<email>jagan@amarulasolutions.com</email>
</author>
<published>2019-10-06T16:03:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9a197c862f0d0863a61715a056c16b07d18aa5d8'/>
<id>9a197c862f0d0863a61715a056c16b07d18aa5d8</id>
<content type='text'>
The LCD timing definitions between Linux DRM vs Allwinner are different,
below diagram shows this clear differences.

           Active                 Front           Sync           Back
           Region                 Porch                          Porch
&lt;-----------------------&gt;&lt;----------------&gt;&lt;--------------&gt;&lt;--------------&gt;
  //////////////////////|
 ////////////////////// |
//////////////////////  |..................                ................
                                           ________________
&lt;----- [hv]display -----&gt;
&lt;------------- [hv]sync_start ------------&gt;
&lt;--------------------- [hv]sync_end ----------------------&gt;
&lt;-------------------------------- [hv]total ------------------------------&gt;

&lt;----- lcd_[xy] --------&gt;		  &lt;- lcd_[hv]spw -&gt;
					  &lt;---------- lcd_[hv]bp ---------&gt;
&lt;-------------------------------- lcd_[hv]t ------------------------------&gt;

The DSI driver misinterpreted the vbp term from the BSP code to refer
only to the backporch, when in fact it was backporch + sync. Thus the
driver incorrectly used the vertical front porch plus sync in its
calculation of the DRQ set bit value, when it should not have included
the sync timing.

Including additional sync timings leads to flip_done timed out as:

WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
[CRTC:46:crtc-0] vblank wait timed out
Modules linked in:
CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00029-g09e5b0ed0a58 #18
Hardware name: Allwinner sun8i Family
Workqueue: events deferred_probe_work_func
[&lt;c010ed54&gt;] (unwind_backtrace) from [&lt;c010b76c&gt;] (show_stack+0x10/0x14)
[&lt;c010b76c&gt;] (show_stack) from [&lt;c0688c70&gt;] (dump_stack+0x84/0x98)
[&lt;c0688c70&gt;] (dump_stack) from [&lt;c011d9e4&gt;] (__warn+0xfc/0x114)
[&lt;c011d9e4&gt;] (__warn) from [&lt;c011da40&gt;] (warn_slowpath_fmt+0x44/0x68)
[&lt;c011da40&gt;] (warn_slowpath_fmt) from [&lt;c040cd50&gt;] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
[&lt;c040cd50&gt;] (drm_atomic_helper_wait_for_vblanks.part.1) from [&lt;c040e694&gt;] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c)
[&lt;c040e694&gt;] (drm_atomic_helper_commit_tail_rpm) from [&lt;c040e4dc&gt;] (commit_tail+0x40/0x6c)
[&lt;c040e4dc&gt;] (commit_tail) from [&lt;c040e5cc&gt;] (drm_atomic_helper_commit+0xbc/0x128)
[&lt;c040e5cc&gt;] (drm_atomic_helper_commit) from [&lt;c0411b64&gt;] (restore_fbdev_mode_atomic+0x1cc/0x1dc)
[&lt;c0411b64&gt;] (restore_fbdev_mode_atomic) from [&lt;c04156f8&gt;] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
[&lt;c04156f8&gt;] (drm_fb_helper_restore_fbdev_mode_unlocked) from [&lt;c0415774&gt;] (drm_fb_helper_set_par+0x30/0x54)
[&lt;c0415774&gt;] (drm_fb_helper_set_par) from [&lt;c03ad450&gt;] (fbcon_init+0x560/0x5ac)
[&lt;c03ad450&gt;] (fbcon_init) from [&lt;c03eb8a0&gt;] (visual_init+0xbc/0x104)
[&lt;c03eb8a0&gt;] (visual_init) from [&lt;c03ed1b8&gt;] (do_bind_con_driver+0x1b0/0x390)
[&lt;c03ed1b8&gt;] (do_bind_con_driver) from [&lt;c03ed780&gt;] (do_take_over_console+0x13c/0x1c4)
[&lt;c03ed780&gt;] (do_take_over_console) from [&lt;c03ad800&gt;] (do_fbcon_takeover+0x74/0xcc)
[&lt;c03ad800&gt;] (do_fbcon_takeover) from [&lt;c013c9c8&gt;] (notifier_call_chain+0x44/0x84)
[&lt;c013c9c8&gt;] (notifier_call_chain) from [&lt;c013cd20&gt;] (__blocking_notifier_call_chain+0x48/0x60)
[&lt;c013cd20&gt;] (__blocking_notifier_call_chain) from [&lt;c013cd50&gt;] (blocking_notifier_call_chain+0x18/0x20)
[&lt;c013cd50&gt;] (blocking_notifier_call_chain) from [&lt;c03a6e44&gt;] (register_framebuffer+0x1e0/0x2f8)
[&lt;c03a6e44&gt;] (register_framebuffer) from [&lt;c04153c0&gt;] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c)
[&lt;c04153c0&gt;] (__drm_fb_helper_initial_config_and_unlock) from [&lt;c04158c8&gt;] (drm_fbdev_client_hotplug+0xe8/0x1b8)
[&lt;c04158c8&gt;] (drm_fbdev_client_hotplug) from [&lt;c0415a20&gt;] (drm_fbdev_generic_setup+0x88/0x118)
[&lt;c0415a20&gt;] (drm_fbdev_generic_setup) from [&lt;c043f060&gt;] (sun4i_drv_bind+0x128/0x160)
[&lt;c043f060&gt;] (sun4i_drv_bind) from [&lt;c044b598&gt;] (try_to_bring_up_master+0x164/0x1a0)
[&lt;c044b598&gt;] (try_to_bring_up_master) from [&lt;c044b668&gt;] (__component_add+0x94/0x140)
[&lt;c044b668&gt;] (__component_add) from [&lt;c0445e1c&gt;] (sun6i_dsi_probe+0x144/0x234)
[&lt;c0445e1c&gt;] (sun6i_dsi_probe) from [&lt;c0452ef4&gt;] (platform_drv_probe+0x48/0x9c)
[&lt;c0452ef4&gt;] (platform_drv_probe) from [&lt;c04512cc&gt;] (really_probe+0x1dc/0x2c8)
[&lt;c04512cc&gt;] (really_probe) from [&lt;c0451518&gt;] (driver_probe_device+0x60/0x160)
[&lt;c0451518&gt;] (driver_probe_device) from [&lt;c044f7a4&gt;] (bus_for_each_drv+0x74/0xb8)
[&lt;c044f7a4&gt;] (bus_for_each_drv) from [&lt;c045107c&gt;] (__device_attach+0xd0/0x13c)
[&lt;c045107c&gt;] (__device_attach) from [&lt;c0450474&gt;] (bus_probe_device+0x84/0x8c)
[&lt;c0450474&gt;] (bus_probe_device) from [&lt;c0450900&gt;] (deferred_probe_work_func+0x64/0x90)
[&lt;c0450900&gt;] (deferred_probe_work_func) from [&lt;c0135970&gt;] (process_one_work+0x204/0x420)
[&lt;c0135970&gt;] (process_one_work) from [&lt;c013690c&gt;] (worker_thread+0x274/0x5a0)
[&lt;c013690c&gt;] (worker_thread) from [&lt;c013b3d8&gt;] (kthread+0x11c/0x14c)
[&lt;c013b3d8&gt;] (kthread) from [&lt;c01010e8&gt;] (ret_from_fork+0x14/0x2c)
Exception stack(0xde539fb0 to 0xde539ff8)
9fa0:                                     00000000 00000000 00000000 00000000
9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
---[ end trace 495200a78b24980e ]---
random: fast init done
[drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out

With the terms(as described in above diagram) fixed, the panel
displays correctly without any timeouts.

Tested-by: Merlijn Wajer &lt;merlijn@wizzup.org&gt;
Signed-off-by: Jagan Teki &lt;jagan@amarulasolutions.com&gt;
Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191006160303.24413-2-icenowy@aosc.io
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The LCD timing definitions between Linux DRM vs Allwinner are different,
below diagram shows this clear differences.

           Active                 Front           Sync           Back
           Region                 Porch                          Porch
&lt;-----------------------&gt;&lt;----------------&gt;&lt;--------------&gt;&lt;--------------&gt;
  //////////////////////|
 ////////////////////// |
//////////////////////  |..................                ................
                                           ________________
&lt;----- [hv]display -----&gt;
&lt;------------- [hv]sync_start ------------&gt;
&lt;--------------------- [hv]sync_end ----------------------&gt;
&lt;-------------------------------- [hv]total ------------------------------&gt;

&lt;----- lcd_[xy] --------&gt;		  &lt;- lcd_[hv]spw -&gt;
					  &lt;---------- lcd_[hv]bp ---------&gt;
&lt;-------------------------------- lcd_[hv]t ------------------------------&gt;

The DSI driver misinterpreted the vbp term from the BSP code to refer
only to the backporch, when in fact it was backporch + sync. Thus the
driver incorrectly used the vertical front porch plus sync in its
calculation of the DRQ set bit value, when it should not have included
the sync timing.

Including additional sync timings leads to flip_done timed out as:

WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
[CRTC:46:crtc-0] vblank wait timed out
Modules linked in:
CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00029-g09e5b0ed0a58 #18
Hardware name: Allwinner sun8i Family
Workqueue: events deferred_probe_work_func
[&lt;c010ed54&gt;] (unwind_backtrace) from [&lt;c010b76c&gt;] (show_stack+0x10/0x14)
[&lt;c010b76c&gt;] (show_stack) from [&lt;c0688c70&gt;] (dump_stack+0x84/0x98)
[&lt;c0688c70&gt;] (dump_stack) from [&lt;c011d9e4&gt;] (__warn+0xfc/0x114)
[&lt;c011d9e4&gt;] (__warn) from [&lt;c011da40&gt;] (warn_slowpath_fmt+0x44/0x68)
[&lt;c011da40&gt;] (warn_slowpath_fmt) from [&lt;c040cd50&gt;] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
[&lt;c040cd50&gt;] (drm_atomic_helper_wait_for_vblanks.part.1) from [&lt;c040e694&gt;] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c)
[&lt;c040e694&gt;] (drm_atomic_helper_commit_tail_rpm) from [&lt;c040e4dc&gt;] (commit_tail+0x40/0x6c)
[&lt;c040e4dc&gt;] (commit_tail) from [&lt;c040e5cc&gt;] (drm_atomic_helper_commit+0xbc/0x128)
[&lt;c040e5cc&gt;] (drm_atomic_helper_commit) from [&lt;c0411b64&gt;] (restore_fbdev_mode_atomic+0x1cc/0x1dc)
[&lt;c0411b64&gt;] (restore_fbdev_mode_atomic) from [&lt;c04156f8&gt;] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
[&lt;c04156f8&gt;] (drm_fb_helper_restore_fbdev_mode_unlocked) from [&lt;c0415774&gt;] (drm_fb_helper_set_par+0x30/0x54)
[&lt;c0415774&gt;] (drm_fb_helper_set_par) from [&lt;c03ad450&gt;] (fbcon_init+0x560/0x5ac)
[&lt;c03ad450&gt;] (fbcon_init) from [&lt;c03eb8a0&gt;] (visual_init+0xbc/0x104)
[&lt;c03eb8a0&gt;] (visual_init) from [&lt;c03ed1b8&gt;] (do_bind_con_driver+0x1b0/0x390)
[&lt;c03ed1b8&gt;] (do_bind_con_driver) from [&lt;c03ed780&gt;] (do_take_over_console+0x13c/0x1c4)
[&lt;c03ed780&gt;] (do_take_over_console) from [&lt;c03ad800&gt;] (do_fbcon_takeover+0x74/0xcc)
[&lt;c03ad800&gt;] (do_fbcon_takeover) from [&lt;c013c9c8&gt;] (notifier_call_chain+0x44/0x84)
[&lt;c013c9c8&gt;] (notifier_call_chain) from [&lt;c013cd20&gt;] (__blocking_notifier_call_chain+0x48/0x60)
[&lt;c013cd20&gt;] (__blocking_notifier_call_chain) from [&lt;c013cd50&gt;] (blocking_notifier_call_chain+0x18/0x20)
[&lt;c013cd50&gt;] (blocking_notifier_call_chain) from [&lt;c03a6e44&gt;] (register_framebuffer+0x1e0/0x2f8)
[&lt;c03a6e44&gt;] (register_framebuffer) from [&lt;c04153c0&gt;] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c)
[&lt;c04153c0&gt;] (__drm_fb_helper_initial_config_and_unlock) from [&lt;c04158c8&gt;] (drm_fbdev_client_hotplug+0xe8/0x1b8)
[&lt;c04158c8&gt;] (drm_fbdev_client_hotplug) from [&lt;c0415a20&gt;] (drm_fbdev_generic_setup+0x88/0x118)
[&lt;c0415a20&gt;] (drm_fbdev_generic_setup) from [&lt;c043f060&gt;] (sun4i_drv_bind+0x128/0x160)
[&lt;c043f060&gt;] (sun4i_drv_bind) from [&lt;c044b598&gt;] (try_to_bring_up_master+0x164/0x1a0)
[&lt;c044b598&gt;] (try_to_bring_up_master) from [&lt;c044b668&gt;] (__component_add+0x94/0x140)
[&lt;c044b668&gt;] (__component_add) from [&lt;c0445e1c&gt;] (sun6i_dsi_probe+0x144/0x234)
[&lt;c0445e1c&gt;] (sun6i_dsi_probe) from [&lt;c0452ef4&gt;] (platform_drv_probe+0x48/0x9c)
[&lt;c0452ef4&gt;] (platform_drv_probe) from [&lt;c04512cc&gt;] (really_probe+0x1dc/0x2c8)
[&lt;c04512cc&gt;] (really_probe) from [&lt;c0451518&gt;] (driver_probe_device+0x60/0x160)
[&lt;c0451518&gt;] (driver_probe_device) from [&lt;c044f7a4&gt;] (bus_for_each_drv+0x74/0xb8)
[&lt;c044f7a4&gt;] (bus_for_each_drv) from [&lt;c045107c&gt;] (__device_attach+0xd0/0x13c)
[&lt;c045107c&gt;] (__device_attach) from [&lt;c0450474&gt;] (bus_probe_device+0x84/0x8c)
[&lt;c0450474&gt;] (bus_probe_device) from [&lt;c0450900&gt;] (deferred_probe_work_func+0x64/0x90)
[&lt;c0450900&gt;] (deferred_probe_work_func) from [&lt;c0135970&gt;] (process_one_work+0x204/0x420)
[&lt;c0135970&gt;] (process_one_work) from [&lt;c013690c&gt;] (worker_thread+0x274/0x5a0)
[&lt;c013690c&gt;] (worker_thread) from [&lt;c013b3d8&gt;] (kthread+0x11c/0x14c)
[&lt;c013b3d8&gt;] (kthread) from [&lt;c01010e8&gt;] (ret_from_fork+0x14/0x2c)
Exception stack(0xde539fb0 to 0xde539ff8)
9fa0:                                     00000000 00000000 00000000 00000000
9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
---[ end trace 495200a78b24980e ]---
random: fast init done
[drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out

With the terms(as described in above diagram) fixed, the panel
displays correctly without any timeouts.

Tested-by: Merlijn Wajer &lt;merlijn@wizzup.org&gt;
Signed-off-by: Jagan Teki &lt;jagan@amarulasolutions.com&gt;
Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191006160303.24413-2-icenowy@aosc.io
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/sun4i: sun6i_mipi_dsi: fix DCS long write packet length</title>
<updated>2019-10-07T12:01:25+00:00</updated>
<author>
<name>Icenowy Zheng</name>
<email>icenowy@aosc.io</email>
</author>
<published>2019-10-06T16:03:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=4340ec45e895c4bd25e9bcdb3b88cd192fd9512c'/>
<id>4340ec45e895c4bd25e9bcdb3b88cd192fd9512c</id>
<content type='text'>
The packet length of DCS long write packet should not be added with 1
when constructing long write packet.

Fix this.

Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191006160303.24413-4-icenowy@aosc.io
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The packet length of DCS long write packet should not be added with 1
when constructing long write packet.

Fix this.

Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191006160303.24413-4-icenowy@aosc.io
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/sun4i: dsi: fix the overhead of the horizontal front porch</title>
<updated>2019-10-07T12:01:25+00:00</updated>
<author>
<name>Icenowy Zheng</name>
<email>icenowy@aosc.io</email>
</author>
<published>2019-10-06T16:03:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=81fafb9488a1d1347b39ad456d85e29649383749'/>
<id>81fafb9488a1d1347b39ad456d85e29649383749</id>
<content type='text'>
The formula in the BSP kernel indicates that a 16-byte overhead is used
when sending the HFP. However, this value is currently set to 6 in the
sun6i_mipi_dsi driver, which makes some panels flashing.

Fix this overhead value.

Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191006160303.24413-3-icenowy@aosc.io
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The formula in the BSP kernel indicates that a 16-byte overhead is used
when sending the HFP. However, this value is currently set to 6 in the
sun6i_mipi_dsi driver, which makes some panels flashing.

Fix this overhead value.

Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191006160303.24413-3-icenowy@aosc.io
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge drm/drm-next into drm-misc-next</title>
<updated>2019-10-03T14:38:50+00:00</updated>
<author>
<name>Maxime Ripard</name>
<email>mripard@kernel.org</email>
</author>
<published>2019-10-03T14:38:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=4092de1ba34eb376791809fb366bc15f8a9e0b7c'/>
<id>4092de1ba34eb376791809fb366bc15f8a9e0b7c</id>
<content type='text'>
We haven't done any backmerge for a while due to the merge window, and it
starts to become an issue for komeda. Let's bring 5.4-rc1 in.

Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We haven't done any backmerge for a while due to the merge window, and it
starts to become an issue for komeda. Let's bring 5.4-rc1 in.

Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "drm/sun4i: dsi: Change the start delay calculation"</title>
<updated>2019-10-03T13:16:44+00:00</updated>
<author>
<name>Icenowy Zheng</name>
<email>icenowy@aosc.io</email>
</author>
<published>2019-10-01T08:02:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a00d17e0a71ae2e4fdaac46e1c12785d3346c3f2'/>
<id>a00d17e0a71ae2e4fdaac46e1c12785d3346c3f2</id>
<content type='text'>
This reverts commit da676c6aa6413d59ab0a80c97bbc273025e640b2.

The original commit adds a start parameter to the calculation of the
start delay according to some old BSP versions from Allwinner. However,
there're two ways to add this delay -- add it in DSI controller or add
it in the TCON. Add it in both controllers won't work.

The code before this commit is picked from new versions of BSP kernel,
which has a comment for the 1 that says "put start_delay to tcon". By
checking the sun4i_tcon0_mode_set_cpu() in sun4i_tcon driver, it has
already added this delay, so we shouldn't repeat to add the delay in DSI
controller, otherwise the timing won't match.

Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Reviewed-by: Jagan Teki &lt;jagan@amarulasolutions.com&gt;
Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191001080253.6135-2-icenowy@aosc.io
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit da676c6aa6413d59ab0a80c97bbc273025e640b2.

The original commit adds a start parameter to the calculation of the
start delay according to some old BSP versions from Allwinner. However,
there're two ways to add this delay -- add it in DSI controller or add
it in the TCON. Add it in both controllers won't work.

The code before this commit is picked from new versions of BSP kernel,
which has a comment for the 1 that says "put start_delay to tcon". By
checking the sun4i_tcon0_mode_set_cpu() in sun4i_tcon driver, it has
already added this delay, so we shouldn't repeat to add the delay in DSI
controller, otherwise the timing won't match.

Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Reviewed-by: Jagan Teki &lt;jagan@amarulasolutions.com&gt;
Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191001080253.6135-2-icenowy@aosc.io
</pre>
</div>
</content>
</entry>
</feed>
