Thread (9 messages) flat view 9 messages, 5 authors, 2021-12-15

Re: [RFC PATCH 00/17] drm: bridge: Samsung MIPI DSIM bridge

From: Adam Ford <hidden>
Date: 2021-12-15 13:34:20
Also in: dri-devel, linux-arm-kernel, linux-samsung-soc

On Thu, Dec 9, 2021 at 3:24 PM Michael Nazzareno Trimarchi
[off-list ref] wrote:
Hi

On Thu, Dec 9, 2021 at 9:24 PM Lucas Stach [off-list ref] wrote:
quoted
Am Donnerstag, dem 09.12.2021 um 18:09 +0100 schrieb Michael Nazzareno
Trimarchi:
quoted
Hi Tim

On Thu, Dec 9, 2021 at 5:40 PM Tim Harvey [off-list ref] wrote:
quoted
On Thu, Dec 9, 2021 at 12:36 AM Michael Nazzareno Trimarchi
[off-list ref] wrote:
quoted
Hi Tim

On Tue, Oct 5, 2021 at 11:43 PM Tim Harvey [off-list ref] wrote:
quoted
On Sun, Jul 25, 2021 at 10:14 AM Jagan Teki [off-list ref] wrote:
quoted
Hi Sam,

On Sun, Jul 25, 2021 at 10:35 PM Sam Ravnborg [off-list ref] wrote:
quoted
Hi Jagan,

On Sun, Jul 04, 2021 at 02:32:13PM +0530, Jagan Teki wrote:
quoted
This series supports common bridge support for Samsung MIPI DSIM
which is used in Exynos and i.MX8MM SoC's.

The final bridge supports both the Exynos and i.MX8MM DSI devices.

Right now bridge offers two sets of implementations.

A. With component_ops and exynos specific code exclusively for
   exynos dsi drivers and it's legacy bindings.

B. Without componenet_ops for newly implemented bridges and its
   users like i.MX8MM.

The future plan is to fix the implementation A) by dropping
component_ops and fixing exynos specific code in order to make
the bridge more mature to use and the same is mentioned in
drivers TODO.

Patch 0001 - 0006: Bridge conversion
Patch 0007 - 0017: Samsung MIPI DSIM bridge fixes, additions

Tested in Engicam i.Core MX8M Mini SoM.

Anyone interest, please have a look on this repo
https://github.com/openedev/linux/tree/070421-imx8mm-dsim

Would appreciate anyone from the exynos team to test it on
the exynos platform?

Any inputs?
I really like where you are headign with this!
No testing - sorry. But I will try to provide a bit of feedback on the
individual patches.

I hope you find a way to move forward with this.
Thanks for the response.

We have found some issues with Bridge conversion on existing exynos
drivers. The component based DSI drivers(like exynos) are difficult to
attach if it involves kms hotplug. kms hotplug would require drm
pointer and that pointer would only available after the bind call
finishes. But the bridge attach in bind call will defer till it find
the attached bridge.

Right now I'm trying to find the proper way to attach the bridges for
component based DSI drivers which involves kms hot-plug.

If you have any ideas on this, please let me know.
Jagan,

How is your progress on this series? Looking at your repo it looks
like you've rebased on top of 5.13-rc3 in your 070121-imx8mm-dsim
branch but you've got a lot of things there that are likely not
related to this series?
I have a bit of work on those patches and tested on imx8mn. Basically:

- add the dsi timing calculation
- change few difference with samsung bridge
- fix crashes of my dsi panels
- compare with NXP driver the final results

I found that I have one problem that gives me some instability. In the
NXP original driver the panel needs to be
enabled in bridge_enable before out the standby. If I understand
correctly, our standby should be done after.
I would like to have some feedback and help and testing on other
boards/devices and some suggestions on how to handle
some of the differences. Another big problem is etnavi that is not stable
Michael,

Where can I find your patches?
I will push on some tree and share
quoted
What do you mean by etnaviv not being stable?

I did some limited testing with etnaviv on imx8mm with 5.15 + dsi

quoted
patches on an Ubuntu focal root filesystem by:
apt update
apt install gnome-session gnome-terminal
^^^ 2D hardware acceleration appears to be working (dragging opaque
windows around)
apt install mesa-utils glmark2
glxgears
^^^ ~160fps on IMX8MM
glmark2
^^^ score of 39 on IMX8MM

I haven't seen any updates from Jagan since Nov 24
(https://www.spinics.net/lists/dri-devel/msg324059.html) and am not
sure if he's been able to work through drm/exynos issues that have
been blocking his progress.
I plan to push on github

[17:07:42.315] Sending ready to systemd
[  214.052085] etnaviv-gpu 38000000.gpu: recover hung GPU!
[  214.595998] etnaviv-gpu 38000000.gpu: recover hung GPU!
Which Nano variant do you have?  Not all Nano's have a GPU.  I know
Tim Harvey was having a similar issue, but it turns out his variant of
the Nano did not include a GPU.
quoted hunk ↗ jump to hunk
quoted
quoted
** (maynard:386): WARNING **: 17:07:43.874: failed to setup mixer: Success
[17:07:44.175] Added surface 0xaaab02630440, app_id (null) to pending list
[17:07:44.176] Added surface 0xaaab026172b0, app_id (null) to pending list
** Message: 17:07:44.289: New advertisement app id maynard
** Message: 17:07:44.290: New advertisement app id maynard
[17:07:45.171] (background) position view 0xaaab0261f860, x 0, y 0, on
output DSI-1
[17:07:45.171] (panel) geom.width 100, geom.height 480, geom.x 0, geom.y 0
[17:07:45.171] (panel) edge 2 position view 0xaaab02634510, x 0, y 0
[17:07:45.172] panel type 2 inited on output DSI-1
[17:07:45.172] Usable area: 380x480+100,0
[  216.932080] etnaviv-gpu 38000000.gpu: recover hung GPU!
[  217.476015] etnaviv-gpu 38000000.gpu: recover hung GPU!
[  218.020157] etnaviv-gpu 38000000.gpu: recover hung GPU!

This is my problem on imx8mn
Note that the GPU on the 8MN is from the GC7000 generation, which
genreally has bogus feature registers, as VeriSilicon stopped using
them in favor of a hardware database. To get the GPu working you need
to transcribe the entry for this specific GPU from the downstream GPU
driver into the etanviv HWDB format, to make the kernel and userspace
driver aware of how to drive this GPU.
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c
b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c
index f2fc645c7956..724f78fd37e5 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c
@@ -68,6 +68,37 @@ static const struct etnaviv_chip_identity
etnaviv_chip_identities[] = {
                .minor_features10 = 0x00004040,
                .minor_features11 = 0x00000024,
        },
+       {
+               .model = 0x7000,
+               .revision = 0x6203,
+               .product_id = ~0U,
+               .customer_id = ~0U,
+               .eco_id = 0,
+               .stream_count = 16,
+               .register_max = 64,
+               .thread_count = 512,
+               .shader_core_count = 2,
+               .vertex_cache_size = 16,
+               .vertex_output_buffer_size = 1024,
+               .pixel_pipes = 1,
+               .instruction_count = 512,
+               .num_constants = 320,
+               .buffer_size = 0,
+               .varyings_count = 16,
+               .features = 0xe0287c8c,
+               .minor_features0 = 0xc1589eff,
+               .minor_features1 = 0xfefbfad9,
+               .minor_features2 = 0xeb9d4fbf,
+               .minor_features3 = 0xedfffced,
+               .minor_features4 = 0xdb0dafc7,
+               .minor_features5 = 0x3b5ac333,
+               .minor_features6 = 0xfcce6000,
+               .minor_features7 = 0xfffbfa6f,
+               .minor_features8 = 0x00e10ef3,
+               .minor_features9 = 0x00c8003c,
+               .minor_features10 = 0x00004040,
+               .minor_features11 = 0x00000024,
+       },
        {
                .model = 0x7000,
                .revision = 0x6204,

Ok, should something like this. Only does not know about this
gcFEATURE_BIT_DE_2D_FAST_CLEAR. I put in features but can even a
minor. Do you know the right mapping?

Michael

Michael
quoted
Regards,
Lucas

--
Michael Nazzareno Trimarchi
Co-Founder & Chief Executive Officer
M. +39 347 913 2170
michael@amarulasolutions.com
__________________________________

Amarula Solutions BV
Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
T. +31 (0)85 111 9172
info@amarulasolutions.com
www.amarulasolutions.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help