On Wed, Jan 25, 2023 at 11:33 PM Marek Vasut <marex@xxxxxxx> wrote: > > On 1/25/23 18:35, Jagan Teki wrote: > > [...] > > >>> exynos_dsi_register_te_irq is done after the bridge attach is done in > >>> Exynos, here bridge attach is triggered in the component ops bind > >>> call, since samsung-dsim is a pure bridge w/o any component ops. > >>> https://github.com/openedev/kernel/blob/imx8mm-dsi-v12/drivers/gpu/drm/bridge/samsung-dsim.c#L1527 > >>> https://github.com/openedev/kernel/blob/imx8mm-dsi-v12/drivers/gpu/drm/exynos/exynos_drm_dsi.c#L112 > >>> > >>> Any suggestion on how to handle this? > >> > >> Why isn't the generic code calling drm_bridge_attach() in > >> samsung_dsim_host_attach(), like the exynos one ? > > > > Exynos drm drivers follow component ops and generic dsim is a pure drm > > bridge whose downstream bridge will attach in bridge ops attach and > > the component-based drivers require an initial bridge attach (whose > > previous is NULL) call in the component bind hook for establishing the > > bridge chain. > > Well in that case, call the exynos optional host_attach and register the > TE IRQ handler at the end, that should work just fine too, right ? If > so, then you can also move the IRQ handler registration into the generic > part of the driver. Something like this? samsung_dsim_host_attach() { drm_bridge_add(&dsi->bridge); if (pdata->host_ops && pdata->host_ops->attach) pdata->host_ops->attach(dsi, device); exynos_dsi_register_te_irq dsi->lanes = device->lanes; dsi->format = device->format; dsi->mode_flags = device->mode_flags; } Jagan.