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.

@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

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

@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

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