[RFC PATCH 00/17] drm: bridge: Samsung MIPI DSIM bridge
Adam Ford
aford173 at gmail.com
Wed Dec 15 05:34:05 PST 2021
On Thu, Dec 9, 2021 at 3:24 PM Michael Nazzareno Trimarchi
<michael at amarulasolutions.com> wrote:
>
> Hi
>
> On Thu, Dec 9, 2021 at 9:24 PM Lucas Stach <dev at lynxeye.de> wrote:
> >
> > Am Donnerstag, dem 09.12.2021 um 18:09 +0100 schrieb Michael Nazzareno
> > Trimarchi:
> > > Hi Tim
> > >
> > > On Thu, Dec 9, 2021 at 5:40 PM Tim Harvey <tharvey at gateworks.com> wrote:
> > > >
> > > > On Thu, Dec 9, 2021 at 12:36 AM Michael Nazzareno Trimarchi
> > > > <michael at amarulasolutions.com> wrote:
> > > > >
> > > > > Hi Tim
> > > > >
> > > > > On Tue, Oct 5, 2021 at 11:43 PM Tim Harvey <tharvey at gateworks.com> wrote:
> > > > > >
> > > > > > On Sun, Jul 25, 2021 at 10:14 AM Jagan Teki <jagan at amarulasolutions.com> wrote:
> > > > > > >
> > > > > > > Hi Sam,
> > > > > > >
> > > > > > > On Sun, Jul 25, 2021 at 10:35 PM Sam Ravnborg <sam at ravnborg.org> wrote:
> > > > > > > >
> > > > > > > > Hi Jagan,
> > > > > > > >
> > > > > > > > On Sun, Jul 04, 2021 at 02:32:13PM +0530, Jagan Teki wrote:
> > > > > > > > > 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
> > >
> > > > What do you mean by etnaviv not being stable?
> > > >
> > > > I did some limited testing with etnaviv on imx8mm with 5.15 + dsi
> > >
> > >
> > >
> > > > 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.
> > >
> > > ** (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
>
> >
> > Regards,
> > Lucas
> >
>
>
> --
> Michael Nazzareno Trimarchi
> Co-Founder & Chief Executive Officer
> M. +39 347 913 2170
> michael at amarulasolutions.com
> __________________________________
>
> Amarula Solutions BV
> Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
> T. +31 (0)85 111 9172
> info at amarulasolutions.com
> www.amarulasolutions.com
More information about the linux-arm-kernel
mailing list