On 1/25/23 20:24, Jagan Teki wrote:
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;
}
Yes, I think that should work .