Hi All, On 02.09.2022 12:47, Marek Szyprowski wrote: > On 29.08.2022 20:40, Jagan Teki wrote: >> Samsung MIPI DSIM controller is common DSI IP that can be used in >> various >> SoCs like Exynos, i.MX8M Mini/Nano. >> >> In order to access this DSI controller between various platform SoCs, >> the ideal way to incorporate this in the drm stack is via the drm bridge >> driver. >> >> This patch is trying to differentiate platform-specific and bridge >> driver >> code and keep maintaining the exynos_drm_dsi.c code as platform-specific >> glue code and samsung-dsim.c as a common bridge driver code. >> >> - Exynos specific glue code is exynos specific te_irq, host_attach, and >> detach code along with conventional component_ops. >> >> - Samsung DSIM is a bridge driver which is common across all >> platforms and >> the respective platform-specific glue will initialize at the end >> of the >> probe. The platform-specific operations and other glue calls will >> invoke >> on associate code areas. >> >> v4: >> * include Inki Dae in MAINTAINERS >> * remove dsi_driver probe in exynos_drm_drv to support multi-arch build > > This breaks Exynos DRM completely as the Exynos DRM driver is not able > to wait until the DSI driver is probed and registered as component. > > I will show how to rework this the way it is done in > drivers/gpu/drm/exynos/exynos_dp.c and > drivers/gpu/drm/bridge/analogix/analogix_dp_core.c soon... I've finally had some time to implement such approach, see https://github.com/mszyprow/linux/tree/v6.0-dsi-v4-reworked If you want me to send the patches against your v4 patchset, let me know, but imho my changes are much more readable after squashing to the original patches. Now the driver is fully multi-arch safe and ready for further extensions. I've removed the weak functions, reworked the way the plat_data is used (dropped the patch related to it) and restored exynos-dsi driver as a part of the Exynos DRM drivers/subsystem. Feel free to resend the above as v5 after testing on your hardware. At least it properly works now on all Exynos boards I have, both compiled into the kernel or as modules. > >> v3: >> * restore gpio related fixes >> * restore proper bridge chain >> * rework initialization issue >> * fix header includes in proper way >> >> v2: >> * fixed exynos dsi driver conversion (Marek Szyprowski) >> * updated commit message >> * updated MAINTAINERS file >> >> v1: >> * don't maintain component_ops in bridge driver >> * don't maintain platform glue code in bridge driver >> * add platform-specific glue code and make a common bridge >> >> Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> >> Signed-off-by: Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx> >> --- >> MAINTAINERS | 9 + >> drivers/gpu/drm/bridge/Kconfig | 12 + >> drivers/gpu/drm/bridge/Makefile | 1 + >> drivers/gpu/drm/bridge/samsung-dsim.c | 1686 ++++++++++++++++++++++ >> drivers/gpu/drm/exynos/Kconfig | 1 + >> drivers/gpu/drm/exynos/exynos_drm_drv.c | 3 - >> drivers/gpu/drm/exynos/exynos_drm_drv.h | 1 - >> drivers/gpu/drm/exynos/exynos_drm_dsi.c | 1715 +---------------------- >> include/drm/bridge/samsung-dsim.h | 99 ++ >> 9 files changed, 1868 insertions(+), 1659 deletions(-) >> create mode 100644 drivers/gpu/drm/bridge/samsung-dsim.c >> create mode 100644 include/drm/bridge/samsung-dsim.h >> >> ... > > Best regards Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland