On 04.05.2022 13: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. > > 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 | 8 + > drivers/gpu/drm/bridge/Kconfig | 12 + > drivers/gpu/drm/bridge/Makefile | 1 + > drivers/gpu/drm/bridge/samsung-dsim.c | 1687 ++++++++++++++++++++++ > drivers/gpu/drm/exynos/Kconfig | 1 + > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 1724 +---------------------- > include/drm/bridge/samsung-dsim.h | 97 ++ > 7 files changed, 1869 insertions(+), 1661 deletions(-) > create mode 100644 drivers/gpu/drm/bridge/samsung-dsim.c > create mode 100644 include/drm/bridge/samsung-dsim.h > ... > -static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi, > - struct device *panel) > +static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi, struct device *panel) > { > - int ret; > + struct samsung_dsim *priv = dsi->priv; > int te_gpio_irq; > + int ret; > - dsi->te_gpio = gpiod_get_optional(panel, "te", GPIOD_IN); > - if (!dsi->te_gpio) { > - return 0; > - } else if (IS_ERR(dsi->te_gpio)) { > - dev_err(dsi->dev, "gpio request failed with %ld\n", > + dsi->te_gpio = devm_gpiod_get_optional(priv->dev, "te", GPIOD_IN); > + if (IS_ERR(dsi->te_gpio)) { The above change is basically a revert to the old broken code, which has been fixed by the following commits: fedc89821990 drm/exynos: Search for TE-gpio in DSI panel's node 8e3fa9d841db drm/exynos: Don't fail if no TE-gpio is defined for DSI driver Please update it to the current mainline state by removing the above change. > ... Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland