On Mon, May 9, 2022 at 5:35 PM Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> wrote: > > On 04.05.2022 13:40, Jagan Teki wrote: > > Add module init and exit functions for the bridge to register > > and unregister dsi_driver. > > > > Exynos drm driver stack will register the platform_driver separately > > in the common of it's exynos_drm_drv.c including dsi_driver. > > > > Register again would return -EBUSY, so return 0 for such cases as > > dsi_driver is already registered. > > > > v2, v1: > > * none > > > > Signed-off-by: Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx> > > --- > > drivers/gpu/drm/bridge/samsung-dsim.c | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c > > index 8f9ae16d45bc..b618e52d0ee3 100644 > > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > > @@ -1740,6 +1740,28 @@ struct platform_driver dsi_driver = { > > }, > > }; > > > > +static int __init samsung_mipi_dsim_init(void) > > +{ > > + int ret; > > + > > + ret = platform_driver_register(&dsi_driver); > > + > > + /** > > + * Exynos drm driver stack will register the platform_driver > > + * separately in the common of it's exynos_drm_drv.c including > > + * dsi_driver. Register again would return -EBUSY, so return 0 > > + * for such cases as dsi_driver is already registered. > > + */ > > + return ret == -EBUSY ? 0 : ret; > > +} > > +module_init(samsung_mipi_dsim_init); > > I've just noticed this. The above approach is really a bad pattern: > registering the same driver 2 times and relying on the error. If it tries to register 2nd time, then it returns EBUSY so we are returning 0 for that case. not sure why it registers 2nd time again. Jagan.