Reform 2 bringup progress: wall & battery power, usb, ethernet, audio, hdmi, reset all work. what doesn’t work: PCIe (no link), SD card (only some older, full size SD cards work). untested: MIPI DSI->eDP. most scary part because only experimental drivers exist.

Follow

@mntmn what are you using for dsi->eDP? The rest of the stack (mxsfb, nwl, mixel) should be in a reasonable shape with linux-next and the latest patches on the dri list.

@agx good timing :) i'm currently hacking on it. i'm using TI SN65DSI86, which has a mainline driver and seems pretty simple. i also picked some of your patches like source.puri.sm/Librem5/linux-n

@agx at the moment i'm trying to figure out how to define an eDP panel in DTS

@mntmn this one should have all the dtb, mxsfb and nwl patches: source.puri.sm/guido.gunther/l - i've only used panel_bridge with that but ti,sn65dsi86 should work instead of that by swapping the panel out and the bridge in in dt.

@agx thank you for this! i will attempt to integrate the code today. what is the role of mxsfb? is it a replacement/alternative to imx-drm? (i’m currently using a hacked up version of that with hdmi)

@mntmn mxsfb used the lcdif interface instead of dcss which is way simpler and has (with robert's patches that i pulled into my tree) mainline support which dcss hasn't.

@mntmn the version you picked is rather old and might not support bridge chaining.

@agx oh, thanks for the hint! not always easy for me to track where are the latest developments ;)

@agx OK, i have all the code integrated. but i struggle configuring the lcdif > mipi_dsi > sn65dsi > edp chain in dts. i think the main problem is i don’t know how to define a “panel” for the bridge chip... simple-panel and simple-panel-dsi don’t seem to be right. i can probe the sn65 with a simple-panel, but mipi_dsi host is never attached.

@agx ok i figured out that far, but i believe the sn65dsi doesn't work without a panel for its output, testing now

@agx ti-sn65dsi86.c fails with DRM_ERROR("could not find any panel node\n"); if there is no panel. so i'm using a simple-panel now as an edp output, and it makes sn65dsi probe. but the line with mipi_dsi_attach(dsi); in sn65dsi is never reached, and mipi_dsi is never added as a bridge, so mxsfb always fails to "create outputs", not finding mipi_dsi as a bridge.

@mntmn the sn64dsi86 wants your edp panel as output again (edp_panel_in) - i so far describe the chain only up to that. so its mxsfb -> nwl (drm bridge) -> ts65dsi86 (drm bridge) -> edp (drm panel). see ti_sn_bridge_probe. so your edp panel needs a panel entry within the ts65dsi86's dt node similar to what we do for our dsi panel within the nwl's bridge node: source.puri.sm/guido.gunther/l - just a guess since i've not used the ts65dsi86.

@agx yes, i think the panel part is ok now, but nobody is ever calling ti_sn_bridge_attach and so the whole chain does not finish setting up. i don't understand who is responsible for calling it. also there is this longer comment elixir.bootlin.com/linux/v5.3-

@agx ok so moving the dsi code after that TODO comment into the probe function actually makes it work

@mntmn it allows the mipi dsi host controller to use the iomuxc_gpr as mux controller since it needs to toggle between dcss and mxsfb input.

Sign in to participate in the conversation
Librem Social

Librem Social is an opt-in public network. Messages are shared under Creative Commons BY-SA 4.0 license terms. Policy.

Stay safe. Please abide by our code of conduct.

(Source code)

image/svg+xml Librem Chat image/svg+xml