| Message ID | 20220504114021.33265-8-jagan@amarulasolutions.com |
|---|---|
| State | New |
| Headers |
Return-Path: <linux-amarula+bncBD7MFH7A7EEBB3OMZGJQMGQEITENIUY@amarulasolutions.com> X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 8D1B33F067 for <linux-amarula@patchwork.amarulasolutions.com>; Wed, 4 May 2022 13:41:34 +0200 (CEST) Received: by mail-pg1-f198.google.com with SMTP id r204-20020a632bd5000000b003c1720b306bsf621464pgr.8 for <linux-amarula@patchwork.amarulasolutions.com>; Wed, 04 May 2022 04:41:34 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1651664493; cv=pass; d=google.com; s=arc-20160816; b=OQVfjNmdZHJ2tBRekiEyOnQeFt8eX+iNU3hQKlSj41d+jZP0RyKOjQbcNm9TPbDMks ZOWKyrbrrNT/yBIfyLChdn7T9lcV2RglNNUiF9UBZJxyKdWC4HDtNrpvdWn4nuy2C3NL oJgtkE2HahwKTdvoMcZs8u8UYmzYHhjVznVSqgHaL6elmDFyKxHqfjrX0XhSnLOhWPFu lpkC7veLxhQfxx+gaa0bgYazGpBE29qqZmXGccFPJ3Ry+kwQwlj7ZWwvwvBR+5l78x2z 9HSheYHYobgSw4ChxMHW3kjG3pPk78rRQS43I1tmmnH7zRHmGixgzYqU6eqBU/1UWtcq c8Pg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=nJ/5AytwQP4xpJfai7hf7UHs/GiYAfMN64g4kU+wrTs=; b=kc5FHVllq5lZQGKFfr9D6JiO1EToEKk3FN9mbDCsKmv8bwFiPraXtGybpvm2oYBKSk uwN6U4FucnJUSRplYCgN8ZQoPsZB5TNSDYzeRchWJUwtweQhQqgBZeDlFSGtiS/k94pt MyFmNyTsJduTBiX9ESCRRibTCMjIPLx46V49I3GzaqX1A55lBSseKeiE3BCDwHmkcazx wCK6j0U4ncSL706nbGL6QqYE7NQhYeCdCnSvAIYp5J7AS+m9BOiT5mcPPEDdIo4DHG/Y C+eU4sayIu8nE2H7KWxDPfhNCCUIyO4KJx9yxWuYWQEkTKYwZt3onZk1AwUXg+fxl8cJ 2L1w== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=GAMchdnO; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-unsubscribe; bh=nJ/5AytwQP4xpJfai7hf7UHs/GiYAfMN64g4kU+wrTs=; b=LXVTMdNuyckZsdzTuqfNMoloXhcDNcrJm0xzCZjcdyk6HI19hgOSAxgwI299gBklNJ xS9/jML7s7tVQEP2PK9ZIqrQmInGNoTA9HBV/hKugDsapcqiWDfwUaId/PH9bvKWC8jh x0sG49/vMrK15D7o/FqZTgyRhODgmpxoYFPrE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-unsubscribe; bh=nJ/5AytwQP4xpJfai7hf7UHs/GiYAfMN64g4kU+wrTs=; b=eqfbaUIjQ1/Dgoypij7yizkfIy7i2QXeaNLlK/mPlVllkH6CpsmGqjMPAdJCwi0Bx2 skzvOq1gVtszWXR0WvuwLKgh2f8os80drj/G24TRtvjnD1w/ygZPIgJpGiPF6Kj8OcUb M6E6WmCuemn/iUQNh4+7QGAwiY+OXDoxBbqApoSzx/j+H9ghqvkNzbpvGRS0b8gCCz+c nNS1nZ9KoMldXZX7foc0Vz7pon6l4BY+Wo1l9xX0NcU7F0UqauY5gmZOXe+GMSAPyapj 1gxirIdTOYP/7X1C9rdujl2TAUemFBLlIiYFa0wEshYvS0va5TZMf3YXsrmsvWVtBiQb dewg== X-Gm-Message-State: AOAM530KAg6nw2Hhrpu4mhCPbtTOOdb9S7blPOaSoG3xr8LcWodeYOAR m4l2hf8ZsaN1w0p3dD7SIXTNdo/m X-Google-Smtp-Source: ABdhPJxmsJPjSUFGi0KtFsFU2spsUvKa7hEJK0NHKfpKEQg2aDqiD0ShJgEUrqE7+T1WrcEC8kEHNw== X-Received: by 2002:a63:d505:0:b0:3c2:5a75:47f6 with SMTP id c5-20020a63d505000000b003c25a7547f6mr8848073pgg.170.1651664493378; Wed, 04 May 2022 04:41:33 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:902:d2ca:b0:15e:bde6:299d with SMTP id n10-20020a170902d2ca00b0015ebde6299dls1197385plc.0.gmail; Wed, 04 May 2022 04:41:32 -0700 (PDT) X-Received: by 2002:a17:90a:fc8a:b0:1d8:ace3:70bc with SMTP id ci10-20020a17090afc8a00b001d8ace370bcmr9945450pjb.37.1651664492677; Wed, 04 May 2022 04:41:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651664492; cv=none; d=google.com; s=arc-20160816; b=FIIe4NR3cpXR1le+Cb3W5LY64FQJi5ufq+D/eRR84EcMY7g3DF+wvNBzYwKu/jJS3u VTnoGYUDedFl/QfNOWd2Fly9CnDx5+Gtk+l21aa6g+Sk223D+2SQhQDCIWHeAm/lhNZV lPr9QXfnh1p8YJnInYN3zygQtKWhK8XzQ62q2DJmk593S7KGCvQgj2nJ2CXe/c0gTfKt JPpPwHcvhHo749jcee0F681VMqXMlo1Y/K3h6MiNgQzKXfxcSUi+h7/3nEKfX6E7TOZ6 rz9S5bIekwxKs7KhHd6dWHGuXsi2fVCerOubFlL186DXfQON+m5rfjZLbRB5FWu4UQhR du7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=zroNIHNyi1xhWUCjMbfGRAX1xVgB1APMgcHSCv64Dcg=; b=ZDOV6lcnjxzy2ynWpsCcMYxIyiJx/4oWxiuNXB6AbXm3kjzDdL0Vbm+8sSdOB8Zbpu NnMD1FgVzPjxks3NiwRUlf2ADuReFxkih8qk6BhGRJsq/O4CkUywQBebB0LPCSgSdnbw C7/S/aDHR7By3SqGL7BpEGcWGDfEOZLlNCXDetj6uzgqAR2g6hwqrxUzywMusq0uIE3m 6dWq1Vn8T9d1Vb6I6jfRRWE85stPo1k433SqVs/UapsbxnxK5d4JlgHWhvG6bBCvjyrG wA5tFbp/n5gCZr5VVCljHt17aIyrtYY7xo5239hn4s9OCdsa0xnwA4/IEG6dTh9OOLFE GQZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=GAMchdnO; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id s34-20020a17090a2f2500b001dc96ab224esor829903pjd.33.2022.05.04.04.41.32 for <linux-amarula@amarulasolutions.com> (Google Transport Security); Wed, 04 May 2022 04:41:32 -0700 (PDT) Received-SPF: pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Received: by 2002:a17:90a:fa97:b0:1dc:2805:9b0a with SMTP id cu23-20020a17090afa9700b001dc28059b0amr9700771pjb.85.1651664492362; Wed, 04 May 2022 04:41:32 -0700 (PDT) Received: from localhost.localdomain ([183.83.137.38]) by smtp.gmail.com with ESMTPSA id k15-20020aa790cf000000b0050dc7628174sm8027498pfk.78.2022.05.04.04.41.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 May 2022 04:41:31 -0700 (PDT) From: Jagan Teki <jagan@amarulasolutions.com> To: Andrzej Hajda <andrzej.hajda@intel.com>, Inki Dae <inki.dae@samsung.com>, Marek Szyprowski <m.szyprowski@samsung.com>, Joonyoung Shim <jy0922.shim@samsung.com>, Seung-Woo Kim <sw0312.kim@samsung.com>, Kyungmin Park <kyungmin.park@samsung.com>, Frieder Schrempf <frieder.schrempf@kontron.de>, Fancy Fang <chen.fang@nxp.com>, Tim Harvey <tharvey@gateworks.com>, Michael Nazzareno Trimarchi <michael@amarulasolutions.com>, Adam Ford <aford173@gmail.com>, Neil Armstrong <narmstrong@baylibre.com>, Robert Foss <robert.foss@linaro.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Tommaso Merciai <tommaso.merciai@amarulasolutions.com> Cc: Matteo Lisi <matteo.lisi@engicam.com>, dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, NXP Linux Team <linux-imx@nxp.com>, linux-amarula <linux-amarula@amarulasolutions.com>, Jagan Teki <jagan@amarulasolutions.com> Subject: [PATCH v2 07/12] drm: bridge: samsung-dsim: Add module init, exit Date: Wed, 4 May 2022 17:10:16 +0530 Message-Id: <20220504114021.33265-8-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220504114021.33265-1-jagan@amarulasolutions.com> References: <20220504114021.33265-1-jagan@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=GAMchdnO; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: <linux-amarula.amarulasolutions.com> X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: <https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/post>, <mailto:linux-amarula@amarulasolutions.com> List-Help: <https://support.google.com/a/amarulasolutions.com/bin/topic.py?topic=25838>, <mailto:linux-amarula+help@amarulasolutions.com> List-Archive: <https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/> List-Unsubscribe: <mailto:googlegroups-manage+476853432473+unsubscribe@googlegroups.com>, <https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/subscribe> |
| Series |
drm: bridge: Add Samsung MIPI DSIM bridge
|
|
Commit Message
Jagan Teki
May 4, 2022, 11:40 a.m. UTC
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@amarulasolutions.com>
---
drivers/gpu/drm/bridge/samsung-dsim.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
Comments
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@amarulasolutions.com> > --- > 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. This gives the following error on Exynos boards: Error: Driver 'samsung-dsim' is already registered, aborting... which a bit misleading, because it is assumed that this will be ok. This will also break if one compile it as modules, because the driver operation will depend on the order of module loading (and Exynos DSI won't be able to load as a second 'driver'). However the most important issue with such pattern is lack of multi-platform support (used usually by generic distros). One would not be able to compile a kernel with both Exynos and IMX support built-in. New drivers should really follow the multi-platform friendly patterns. > + > +static void __exit samsung_mipi_dsim_exit(void) > +{ > + platform_driver_unregister(&dsi_driver); > +} > +module_exit(samsung_mipi_dsim_exit); > + > MODULE_AUTHOR("Jagan Teki <jagan@amarulasolutions.com>"); > MODULE_DESCRIPTION("Samsung MIPI DSIM controller bridge"); > MODULE_LICENSE("GPL"); Best regards
On Mon, May 9, 2022 at 5:35 PM Marek Szyprowski <m.szyprowski@samsung.com> 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@amarulasolutions.com> > > --- > > 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.
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); + +static void __exit samsung_mipi_dsim_exit(void) +{ + platform_driver_unregister(&dsi_driver); +} +module_exit(samsung_mipi_dsim_exit); + MODULE_AUTHOR("Jagan Teki <jagan@amarulasolutions.com>"); MODULE_DESCRIPTION("Samsung MIPI DSIM controller bridge"); MODULE_LICENSE("GPL");