<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/gpu/drm/exynos, branch v4.19.237</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v4.19.237</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v4.19.237'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2020-07-22T07:32:01+00:00</updated>
<entry>
<title>drm/exynos: fix ref count leak in mic_pre_enable</title>
<updated>2020-07-22T07:32:01+00:00</updated>
<author>
<name>Navid Emamdoost</name>
<email>navid.emamdoost@gmail.com</email>
</author>
<published>2020-06-15T05:49:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b2cde935ada2fce7a7c5b01831fe26625f4715b4'/>
<id>urn:sha1:b2cde935ada2fce7a7c5b01831fe26625f4715b4</id>
<content type='text'>
[ Upstream commit d4f5a095daf0d25f0b385e1ef26338608433a4c5 ]

in mic_pre_enable, pm_runtime_get_sync is called which
increments the counter even in case of failure, leading to incorrect
ref count. In case of failure, decrement the ref count before returning.

Signed-off-by: Navid Emamdoost &lt;navid.emamdoost@gmail.com&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>drm/exynos: dsi: fix workaround for the legacy clock name</title>
<updated>2020-03-25T07:06:06+00:00</updated>
<author>
<name>Marek Szyprowski</name>
<email>m.szyprowski@samsung.com</email>
</author>
<published>2020-02-20T12:30:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=a832f5e0e8b37575bcc81eb404787a777d076db1'/>
<id>urn:sha1:a832f5e0e8b37575bcc81eb404787a777d076db1</id>
<content type='text'>
[ Upstream commit c0fd99d659ba5582e09625c7a985d63fc2ca74b5 ]

Writing to the built-in strings arrays doesn't work if driver is loaded
as kernel module. This is also considered as a bad pattern. Fix this by
adding a call to clk_get() with legacy clock name. This fixes following
kernel oops if driver is loaded as module:

Unable to handle kernel paging request at virtual address bf047978
 pgd = (ptrval)
 [bf047978] *pgd=59344811, *pte=5903c6df, *ppte=5903c65f
 Internal error: Oops: 80f [#1] SMP ARM
 Modules linked in: mc exynosdrm(+) analogix_dp rtc_s3c exynos_ppmu i2c_gpio
 CPU: 1 PID: 212 Comm: systemd-udevd Not tainted 5.6.0-rc2-next-20200219 #326
 videodev: Linux video capture interface: v2.00
 Hardware name: Samsung Exynos (Flattened Device Tree)
 PC is at exynos_dsi_probe+0x1f0/0x384 [exynosdrm]
 LR is at exynos_dsi_probe+0x1dc/0x384 [exynosdrm]
 ...
 Process systemd-udevd (pid: 212, stack limit = 0x(ptrval))
 ...
 [&lt;bf03cf14&gt;] (exynos_dsi_probe [exynosdrm]) from [&lt;c09b1ca0&gt;] (platform_drv_probe+0x6c/0xa4)
 [&lt;c09b1ca0&gt;] (platform_drv_probe) from [&lt;c09afcb8&gt;] (really_probe+0x210/0x350)
 [&lt;c09afcb8&gt;] (really_probe) from [&lt;c09aff74&gt;] (driver_probe_device+0x60/0x1a0)
 [&lt;c09aff74&gt;] (driver_probe_device) from [&lt;c09b0254&gt;] (device_driver_attach+0x58/0x60)
 [&lt;c09b0254&gt;] (device_driver_attach) from [&lt;c09b02dc&gt;] (__driver_attach+0x80/0xbc)
 [&lt;c09b02dc&gt;] (__driver_attach) from [&lt;c09ade00&gt;] (bus_for_each_dev+0x68/0xb4)
 [&lt;c09ade00&gt;] (bus_for_each_dev) from [&lt;c09aefd8&gt;] (bus_add_driver+0x130/0x1e8)
 [&lt;c09aefd8&gt;] (bus_add_driver) from [&lt;c09b0d64&gt;] (driver_register+0x78/0x110)
 [&lt;c09b0d64&gt;] (driver_register) from [&lt;bf038558&gt;] (exynos_drm_init+0xe8/0x11c [exynosdrm])
 [&lt;bf038558&gt;] (exynos_drm_init [exynosdrm]) from [&lt;c0302fa8&gt;] (do_one_initcall+0x50/0x220)
 [&lt;c0302fa8&gt;] (do_one_initcall) from [&lt;c03dd02c&gt;] (do_init_module+0x60/0x210)
 [&lt;c03dd02c&gt;] (do_init_module) from [&lt;c03dbf44&gt;] (load_module+0x1c0c/0x2310)
 [&lt;c03dbf44&gt;] (load_module) from [&lt;c03dc85c&gt;] (sys_finit_module+0xac/0xbc)
 [&lt;c03dc85c&gt;] (sys_finit_module) from [&lt;c0301000&gt;] (ret_fast_syscall+0x0/0x54)
 Exception stack(0xd979bfa8 to 0xd979bff0)
 ...
 ---[ end trace db16efe05faab470 ]---

Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Reviewed-by: Andrzej Hajda &lt;a.hajda@samsung.com&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>drm/exynos: dsi: propagate error value and silence meaningless warning</title>
<updated>2020-03-25T07:06:06+00:00</updated>
<author>
<name>Marek Szyprowski</name>
<email>m.szyprowski@samsung.com</email>
</author>
<published>2020-02-27T07:06:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=df263df8d3ad8da2534f684bdfc6f8cbc33ee5ab'/>
<id>urn:sha1:df263df8d3ad8da2534f684bdfc6f8cbc33ee5ab</id>
<content type='text'>
[ Upstream commit 0a9d1e3f3f038785ebc72d53f1c409d07f6b4ff5 ]

Properly propagate error value from devm_regulator_bulk_get() and don't
confuse user with meaningless warning about failure in getting regulators
in case of deferred probe.

Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Reviewed-by: Krzysztof Kozlowski &lt;krzk@kernel.org&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>drm/exynos: gsc: add missed component_del</title>
<updated>2020-01-12T11:17:21+00:00</updated>
<author>
<name>Chuhong Yuan</name>
<email>hslester96@gmail.com</email>
</author>
<published>2019-11-18T11:39:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=f2bcbc595849d5408b07f3814a86ed8950652f16'/>
<id>urn:sha1:f2bcbc595849d5408b07f3814a86ed8950652f16</id>
<content type='text'>
[ Upstream commit 84c92365b20a44c363b95390ea00dfbdd786f031 ]

The driver forgets to call component_del in remove to match component_add
in probe.
Add the missed call to fix it.

Signed-off-by: Chuhong Yuan &lt;hslester96@gmail.com&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.net&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>drm/exynos: fix missing decrement of retry counter</title>
<updated>2019-08-25T08:47:57+00:00</updated>
<author>
<name>Colin Ian King</name>
<email>colin.king@canonical.com</email>
</author>
<published>2019-07-22T22:25:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=cf9a18d7bcd067675afa3161836b2007893ea7a4'/>
<id>urn:sha1:cf9a18d7bcd067675afa3161836b2007893ea7a4</id>
<content type='text'>
[ Upstream commit 1bbbab097a05276e312dd2462791d32b21ceb1ee ]

Currently the retry counter is not being decremented, leading to a
potential infinite spin if the scalar_reads don't change state.

Addresses-Coverity: ("Infinite loop")
Fixes: 280e54c9f614 ("drm/exynos: scaler: Reset hardware before starting the operation")
Signed-off-by: Colin Ian King &lt;colin.king@canonical.com&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>drm/exynos/mixer: fix MIXER shadow registry synchronisation code</title>
<updated>2019-04-20T07:15:58+00:00</updated>
<author>
<name>Andrzej Hajda</name>
<email>a.hajda@samsung.com</email>
</author>
<published>2019-03-19T13:05:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=41b1234677bdec1df95a0fe1354c2cfaa5bf6052'/>
<id>urn:sha1:41b1234677bdec1df95a0fe1354c2cfaa5bf6052</id>
<content type='text'>
[ Upstream commit 6a3b45ada960ac475ec2b4103d43e57943b2b8d3 ]

MIXER on Exynos5 SoCs uses different synchronisation method than Exynos4
to update internal state (shadow registers).
Apparently the driver implements it incorrectly. The rule should be
as follows:
- do not request updating registers until previous request was finished,
  ie. MXR_CFG_LAYER_UPDATE_COUNT must be 0.
- before setting registers synchronisation on VSYNC should be turned off,
  ie. MXR_STATUS_SYNC_ENABLE should be reset,
- after finishing MXR_STATUS_SYNC_ENABLE should be set again.
The patch hopefully implements it correctly.
Below sample kernel log from page fault caused by the bug:

[   25.670038] exynos-sysmmu 14650000.sysmmu: 14450000.mixer: PAGE FAULT occurred at 0x2247b800
[   25.677888] ------------[ cut here ]------------
[   25.682164] kernel BUG at ../drivers/iommu/exynos-iommu.c:450!
[   25.687971] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
[   25.693778] Modules linked in:
[   25.696816] CPU: 5 PID: 1553 Comm: fb-release_test Not tainted 5.0.0-rc7-01157-g5f86b1566bdd #136
[   25.705646] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[   25.711710] PC is at exynos_sysmmu_irq+0x1c0/0x264
[   25.716470] LR is at lock_is_held_type+0x44/0x64

v2: added missing MXR_CFG_LAYER_UPDATE bit setting in mixer_enable_sync

Reported-by: Marian Mihailescu &lt;mihailescu2m@gmail.com&gt;
Signed-off-by: Andrzej Hajda &lt;a.hajda@samsung.com&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>Revert "drm/exynos/decon5433: implement frame counter"</title>
<updated>2018-11-27T15:13:04+00:00</updated>
<author>
<name>Inki Dae</name>
<email>inki.dae@samsung.com</email>
</author>
<published>2018-10-05T02:50:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=91611ad1bf69ec46d6c61f27eccb44064c28c45c'/>
<id>urn:sha1:91611ad1bf69ec46d6c61f27eccb44064c28c45c</id>
<content type='text'>
[ Upstream commit 6ca469e22a30992b4478d2ab88737c70667c1e00 ]

This reverts commit 0586feba322e1de05075700eb4b835c8b683e62b

This patch makes it to need get_vblank_counter callback in crtc
to get frame counter from decon driver.

However, drm_dev-&gt;max_vblank_count is a member unique to
vendor's DRM driver but in case of ARM DRM, some CRTC devices
don't provide the frame counter value. As a result, this patch
made extension and clone mode not working.

Instead of this patch, we may need separated max_vblank_count
which belongs to each CRTC device, or need to implement frame
counter emulation for them who don't support HW frame counter.

Signed-off-by: Inki Dae &lt;inki.dae@samsung.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>drm/exynos: Use selected dma_dev default iommu domain instead of a fake one</title>
<updated>2018-10-01T00:25:31+00:00</updated>
<author>
<name>Marek Szyprowski</name>
<email>m.szyprowski@samsung.com</email>
</author>
<published>2018-09-28T16:09:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=1feda5eb77fc279a4c4eb93b9a0ac3bf7254b57a'/>
<id>urn:sha1:1feda5eb77fc279a4c4eb93b9a0ac3bf7254b57a</id>
<content type='text'>
Instead of allocating a fake IOMMU domain for all Exynos DRM components,
simply reuse the default IOMMU domain of the already selected DMA device.
This allows some design changes in IOMMU framework without breaking IOMMU
support in Exynos DRM.

Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Reviewed-by: Robin Murphy &lt;robin.murphy@arm.com&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.com&gt;
</content>
</entry>
<entry>
<title>drm/exynos/mixer: Remove unused local variable priv</title>
<updated>2018-07-24T07:28:53+00:00</updated>
<author>
<name>Krzysztof Kozlowski</name>
<email>krzk@kernel.org</email>
</author>
<published>2018-07-18T19:55:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=3f2b78d630b46c7921cb415be35f686e5293c3a4'/>
<id>urn:sha1:3f2b78d630b46c7921cb415be35f686e5293c3a4</id>
<content type='text'>
Remove local variable 'priv' to fix GCC warning:

    drivers/gpu/drm/exynos/exynos_mixer.c: In function 'mixer_initialize':
    drivers/gpu/drm/exynos/exynos_mixer.c:840:29: warning: variable 'priv' set but not used [-Wunused-but-set-variable]

Signed-off-by: Krzysztof Kozlowski &lt;krzk@kernel.org&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.com&gt;
</content>
</entry>
<entry>
<title>drm/exynos: Ensure suspended runtime PM state during system suspend</title>
<updated>2018-07-24T07:28:53+00:00</updated>
<author>
<name>Marek Szyprowski</name>
<email>m.szyprowski@samsung.com</email>
</author>
<published>2018-06-11T12:25:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=7e915746de03e0e62d58491f22805cc5a80a581a'/>
<id>urn:sha1:7e915746de03e0e62d58491f22805cc5a80a581a</id>
<content type='text'>
Add calls to pm_runtime_force_{suspend,resume} as SYSTEM_SLEEP_PM_OPS for
all drivers for the real Exynos DRM hardware modules. This ensures that
the resources will be released for the system PM suspend/resume cycle.
Exynos DRM core already takes care of suspending the whole display pipeline
before PM callbacks of the real devices are called.

Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.com&gt;
</content>
</entry>
</feed>
