<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/gpu/drm/sun4i, branch v5.5-rc2</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<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.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.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.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.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.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.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.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.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>
<entry>
<title>drm/sun4i: dsi: Fix TCON DRQ set bits</title>
<updated>2019-10-03T13:07:42+00:00</updated>
<author>
<name>Jagan Teki</name>
<email>jagan@amarulasolutions.com</email>
</author>
<published>2019-10-03T06:45:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=7ac6269968826f9cad61b501bb613cc5cadb7229'/>
<id>7ac6269968826f9cad61b501bb613cc5cadb7229</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 hbp term from the BSP code to refer
only to the backporch, when in fact it was backporch + sync. Thus the
driver incorrectly used the horizontal 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-00026-g01f0c75b902d-dirty #13
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 b57eb1e5c64c6b8b ]---
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: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191003064527.15128-2-jagan@amarulasolutions.com
</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 hbp term from the BSP code to refer
only to the backporch, when in fact it was backporch + sync. Thus the
driver incorrectly used the horizontal 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-00026-g01f0c75b902d-dirty #13
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 b57eb1e5c64c6b8b ]---
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: Maxime Ripard &lt;mripard@kernel.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191003064527.15128-2-jagan@amarulasolutions.com
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/sun4i: sun6i_mipi_dsi: Add VCC-DSI regulator support</title>
<updated>2019-10-03T11:48:43+00:00</updated>
<author>
<name>Jagan Teki</name>
<email>jagan@amarulasolutions.com</email>
</author>
<published>2019-10-03T06:45:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1c056ad87117c47a02b73df63555788b751968c4'/>
<id>1c056ad87117c47a02b73df63555788b751968c4</id>
<content type='text'>
Allwinner MIPI DSI controllers are supplied with SoC
DSI power rails via VCC-DSI pin.

Add support for this supply pin by adding voltage
regulator handling code to MIPI DSI driver.

Tested-by: Merlijn Wajer &lt;merlijn@wizzup.org&gt;
Reviewed-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Signed-off-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/20191003064527.15128-6-jagan@amarulasolutions.com
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allwinner MIPI DSI controllers are supplied with SoC
DSI power rails via VCC-DSI pin.

Add support for this supply pin by adding voltage
regulator handling code to MIPI DSI driver.

Tested-by: Merlijn Wajer &lt;merlijn@wizzup.org&gt;
Reviewed-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Signed-off-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/20191003064527.15128-6-jagan@amarulasolutions.com
</pre>
</div>
</content>
</entry>
</feed>
