From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 813B3C54EED for ; Tue, 24 Jan 2023 21:04:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231987AbjAXVEm (ORCPT ); Tue, 24 Jan 2023 16:04:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37060 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229487AbjAXVEl (ORCPT ); Tue, 24 Jan 2023 16:04:41 -0500 Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9495D2685 for ; Tue, 24 Jan 2023 13:04:40 -0800 (PST) Received: from [127.0.0.1] (p578adb1c.dip0.t-ipconnect.de [87.138.219.28]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 9B878855B5; Tue, 24 Jan 2023 22:04:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1674594278; bh=i2Tf2xUr41a1Xt/qiigFI3GfvYyaAwEqq7DZFLV5OG0=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=uMQwwuly9x8Spq6TaC4a6R+bQ3/w1Ickun6Fdv4I6v23C3v56RccT0S2JBZvgK96I vT9O9IF4HjCwZqGNIsR5XzkCh1b29Q2ULS4Y4s0fjsyg2AkLywaIeh6Wq5z0BxJPDT Z3Lqa0iKRMxyCWih0wFtSkdPIwDdbU9zRDLJhmrw906/hCt54ww13JJgPcZDemgcc8 xsKRGxc/XhHB3dBiQOk0b9113EeMpdCA/uNCq+cw+pht3TrsvBAU4NiJUUGV6osXFl Zm0xef5rTHy8zh8dGQ5tmEkedbwl/Ji1BOCDNrqHCh3u1Fdy8eevGc9HGeeCnhVICP upwXyE1+nhMUw== Message-ID: Date: Tue, 24 Jan 2023 22:04:37 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [RESEND PATCH v11 12/18] drm: exynos: dsi: Consolidate component and bridge Content-Language: en-US To: Jagan Teki , Andrzej Hajda , Inki Dae , Marek Szyprowski , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Frieder Schrempf , Fancy Fang , Tim Harvey , Michael Nazzareno Trimarchi , Adam Ford , Neil Armstrong , Robert Foss , Laurent Pinchart , Tommaso Merciai Cc: Matteo Lisi , dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, NXP Linux Team , linux-amarula References: <20230123151212.269082-1-jagan@amarulasolutions.com> <20230123151212.269082-13-jagan@amarulasolutions.com> From: Marek Vasut In-Reply-To: <20230123151212.269082-13-jagan@amarulasolutions.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org On 1/23/23 16:12, Jagan Teki wrote: > DSI host registration, attach and detach operations are quite > different for the component and bridge-based DRM drivers. > > Supporting generic bridge driver to use both component and bridge > based DRM drivers can be tricky and would require additional host > related operation hooks. > > Add host operation hooks for registering and unregistering Exynos > and generic drivers, where Exynos hooks are used in existing Exynos > component based DRM drivers and generic hooks are used in i.MX8M > bridge based DRM drivers. > > Add host attach and detach operation hooks for Exynos component > DRM drivers and those get invoked while DSI core host attach and > detach gets called. > > Signed-off-by: Marek Szyprowski > Signed-off-by: Jagan Teki > --- > Changes for v11: > - none > Changes for v10: > - split from previous series patch > "drm: bridge: Generalize Exynos-DSI driver into a Samsung DSIM bridge" > > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 179 ++++++++++++++++++------ > 1 file changed, 140 insertions(+), 39 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > index 7afbbe30d1d3..fc7f00ab01b4 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > @@ -250,6 +250,8 @@ struct exynos_dsi_transfer { > u16 rx_done; > }; > > +struct exynos_dsi; Is this forward declaration really necessary ? Can't the structures below be reordered to get rid of this ? > #define DSIM_STATE_ENABLED BIT(0) > #define DSIM_STATE_INITIALIZED BIT(1) > #define DSIM_STATE_CMD_LPM BIT(2) > @@ -281,12 +283,19 @@ struct exynos_dsi_driver_data { > const unsigned int *reg_values; > }; > > +struct exynos_dsim_host_ops { > + int (*register_host)(struct exynos_dsi *dsim); > + void (*unregister_host)(struct exynos_dsi *dsim); > + int (*attach)(struct exynos_dsi *dsim, struct mipi_dsi_device *device); > + int (*detach)(struct exynos_dsi *dsim, struct mipi_dsi_device *device); > +}; > + > struct exynos_dsi_plat_data { > enum exynos_dsi_type hw_type; > + const struct exynos_dsim_host_ops *host_ops; > }; > > struct exynos_dsi { > - struct drm_encoder encoder; > struct mipi_dsi_host dsi_host; > struct drm_bridge bridge; > struct drm_bridge *out_bridge; > @@ -316,6 +325,12 @@ struct exynos_dsi { > > const struct exynos_dsi_driver_data *driver_data; > const struct exynos_dsi_plat_data *plat_data; > + > + void *priv; > +}; > + > +struct exynos_dsi_enc { > + struct drm_encoder encoder; > }; > > #define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host) > @@ -1319,10 +1334,11 @@ static irqreturn_t exynos_dsi_irq(int irq, void *dev_id) > > static irqreturn_t exynos_dsi_te_irq_handler(int irq, void *dev_id) > { > - struct exynos_dsi *dsi = (struct exynos_dsi *)dev_id; > + struct exynos_dsi *dsim = (struct exynos_dsi *)dev_id; Is the rename really needed ? > + struct exynos_dsi_enc *dsi = dsim->priv; Call this variable something else , like dsi_enc , and you shouldn't need the rename above ... > struct drm_encoder *encoder = &dsi->encoder; > > - if (dsi->state & DSIM_STATE_VIDOUT_AVAILABLE) > + if (dsim->state & DSIM_STATE_VIDOUT_AVAILABLE) ... and the rename here . > exynos_drm_crtc_te_handler(encoder->crtc); > > return IRQ_HANDLED; [...] > static void exynos_dsi_unbind(struct device *dev, struct device *master, > void *data) > { > - struct exynos_dsi *dsi = dev_get_drvdata(dev); > + struct exynos_dsi *dsim = dev_get_drvdata(dev); Please avoid the variable renames globally, that should simplify this patch and remove unrelated changes. > - exynos_dsi_atomic_disable(&dsi->bridge, NULL); > + dsim->bridge.funcs->atomic_disable(&dsim->bridge, NULL); > > - mipi_dsi_host_unregister(&dsi->dsi_host); > + mipi_dsi_host_unregister(&dsim->dsi_host); > } [...] With that fixed: Reviewed-by: Marek Vasut From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 91E57C54E94 for ; Tue, 24 Jan 2023 21:05:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8TDZeai7gGOGnbqJ0yCmgNZlhcEtGADjiF0NgpehthI=; b=XDvqwr9/RJnJvc +kkt6sR+gelnGA2HZeHBPhA5DcWOkH0FsKIfR5W2owoxVm4sh8ob/1Hw5QaQJb79o50f4LbkvBDLf jp9HmY1KNOGoXi4vcbY4uvRheemI4tm+DkxDoJVbf634G9j9t0sq+xNw31NrF0ioNpuZxfi3NlM2W DmFzgwZ9hUN4jrrKLZnKN3VamKVZ6Cgd90/XdjrvyrGfxV+nwmW0rhtXmPDotMW2L1zpHALOEsRCS ZxNPk2T+KtJZ0S+ROPuSbBntDnlKuPAa/fGDlOrGdg09QdYkHSGFg7xKpyKA/CAS1kq38sMsbha2i 8W2uISQ/Xqzs0NU+NGOQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pKQTE-005LEK-3s; Tue, 24 Jan 2023 21:04:44 +0000 Received: from phobos.denx.de ([85.214.62.61]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pKQTA-005LDh-IY for linux-arm-kernel@lists.infradead.org; Tue, 24 Jan 2023 21:04:42 +0000 Received: from [127.0.0.1] (p578adb1c.dip0.t-ipconnect.de [87.138.219.28]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 9B878855B5; Tue, 24 Jan 2023 22:04:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1674594278; bh=i2Tf2xUr41a1Xt/qiigFI3GfvYyaAwEqq7DZFLV5OG0=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=uMQwwuly9x8Spq6TaC4a6R+bQ3/w1Ickun6Fdv4I6v23C3v56RccT0S2JBZvgK96I vT9O9IF4HjCwZqGNIsR5XzkCh1b29Q2ULS4Y4s0fjsyg2AkLywaIeh6Wq5z0BxJPDT Z3Lqa0iKRMxyCWih0wFtSkdPIwDdbU9zRDLJhmrw906/hCt54ww13JJgPcZDemgcc8 xsKRGxc/XhHB3dBiQOk0b9113EeMpdCA/uNCq+cw+pht3TrsvBAU4NiJUUGV6osXFl Zm0xef5rTHy8zh8dGQ5tmEkedbwl/Ji1BOCDNrqHCh3u1Fdy8eevGc9HGeeCnhVICP upwXyE1+nhMUw== Message-ID: Date: Tue, 24 Jan 2023 22:04:37 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [RESEND PATCH v11 12/18] drm: exynos: dsi: Consolidate component and bridge Content-Language: en-US To: Jagan Teki , Andrzej Hajda , Inki Dae , Marek Szyprowski , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Frieder Schrempf , Fancy Fang , Tim Harvey , Michael Nazzareno Trimarchi , Adam Ford , Neil Armstrong , Robert Foss , Laurent Pinchart , Tommaso Merciai Cc: Matteo Lisi , dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, NXP Linux Team , linux-amarula References: <20230123151212.269082-1-jagan@amarulasolutions.com> <20230123151212.269082-13-jagan@amarulasolutions.com> From: Marek Vasut In-Reply-To: <20230123151212.269082-13-jagan@amarulasolutions.com> X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230124_130440_929528_A38B8A78 X-CRM114-Status: GOOD ( 26.93 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMS8yMy8yMyAxNjoxMiwgSmFnYW4gVGVraSB3cm90ZToKPiBEU0kgaG9zdCByZWdpc3RyYXRp b24sIGF0dGFjaCBhbmQgZGV0YWNoIG9wZXJhdGlvbnMgYXJlIHF1aXRlCj4gZGlmZmVyZW50IGZv ciB0aGUgY29tcG9uZW50IGFuZCBicmlkZ2UtYmFzZWQgRFJNIGRyaXZlcnMuCj4gCj4gU3VwcG9y dGluZyBnZW5lcmljIGJyaWRnZSBkcml2ZXIgdG8gdXNlIGJvdGggY29tcG9uZW50wqBhbmQgYnJp ZGdlCj4gYmFzZWQgRFJNIGRyaXZlcnMgY2FuIGJlIHRyaWNreSBhbmQgd291bGQgcmVxdWlyZSBh ZGRpdGlvbmFsIGhvc3QKPiByZWxhdGVkIG9wZXJhdGlvbiBob29rcy4KPiAKPiBBZGQgaG9zdCBv cGVyYXRpb24gaG9va3MgZm9yIHJlZ2lzdGVyaW5nIGFuZCB1bnJlZ2lzdGVyaW5nIEV4eW5vcwo+ IGFuZCBnZW5lcmljIGRyaXZlcnMsIHdoZXJlIEV4eW5vcyBob29rcyBhcmUgdXNlZCBpbiBleGlz dGluZyBFeHlub3MKPiBjb21wb25lbnTCoGJhc2VkIERSTSBkcml2ZXJzIGFuZCBnZW5lcmljIGhv b2tzIGFyZSB1c2VkIGluIGkuTVg4TQo+IGJyaWRnZSBiYXNlZCBEUk0gZHJpdmVycy4KPiAKPiBB ZGQgaG9zdCBhdHRhY2ggYW5kIGRldGFjaCBvcGVyYXRpb24gaG9va3MgZm9yIEV4eW5vcyBjb21w b25lbnQKPiBEUk0gZHJpdmVycyBhbmQgdGhvc2UgZ2V0IGludm9rZWQgd2hpbGUgRFNJIGNvcmUg aG9zdCBhdHRhY2ggYW5kCj4gZGV0YWNoIGdldHMgY2FsbGVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6 IE1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KPiBTaWduZWQtb2Zm LWJ5OiBKYWdhbiBUZWtpIDxqYWdhbkBhbWFydWxhc29sdXRpb25zLmNvbT4KPiAtLS0KPiBDaGFu Z2VzIGZvciB2MTE6Cj4gLSBub25lCj4gQ2hhbmdlcyBmb3IgdjEwOgo+IC0gc3BsaXQgZnJvbSBw cmV2aW91cyBzZXJpZXMgcGF0Y2gKPiAiZHJtOiBicmlkZ2U6IEdlbmVyYWxpemUgRXh5bm9zLURT SSBkcml2ZXIgaW50byBhIFNhbXN1bmcgRFNJTSBicmlkZ2UiCj4gCj4gICBkcml2ZXJzL2dwdS9k cm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMgfCAxNzkgKysrKysrKysrKysrKysrKysrLS0tLS0t Cj4gICAxIGZpbGUgY2hhbmdlZCwgMTQwIGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMKPiBpbmRleCA3YWZiYmUz MGQxZDMuLmZjN2YwMGFiMDFiNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9z L2V4eW5vc19kcm1fZHNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fZHNpLmMKPiBAQCAtMjUwLDYgKzI1MCw4IEBAIHN0cnVjdCBleHlub3NfZHNpX3RyYW5zZmVy IHsKPiAgIAl1MTYgcnhfZG9uZTsKPiAgIH07Cj4gICAKPiArc3RydWN0IGV4eW5vc19kc2k7CgpJ cyB0aGlzIGZvcndhcmQgZGVjbGFyYXRpb24gcmVhbGx5IG5lY2Vzc2FyeSA/IENhbid0IHRoZSBz dHJ1Y3R1cmVzIApiZWxvdyBiZSByZW9yZGVyZWQgdG8gZ2V0IHJpZCBvZiB0aGlzID8KCj4gICAj ZGVmaW5lIERTSU1fU1RBVEVfRU5BQkxFRAkJQklUKDApCj4gICAjZGVmaW5lIERTSU1fU1RBVEVf SU5JVElBTElaRUQJCUJJVCgxKQo+ICAgI2RlZmluZSBEU0lNX1NUQVRFX0NNRF9MUE0JCUJJVCgy KQo+IEBAIC0yODEsMTIgKzI4MywxOSBAQCBzdHJ1Y3QgZXh5bm9zX2RzaV9kcml2ZXJfZGF0YSB7 Cj4gICAJY29uc3QgdW5zaWduZWQgaW50ICpyZWdfdmFsdWVzOwo+ICAgfTsKPiAgIAo+ICtzdHJ1 Y3QgZXh5bm9zX2RzaW1faG9zdF9vcHMgewo+ICsJaW50ICgqcmVnaXN0ZXJfaG9zdCkoc3RydWN0 IGV4eW5vc19kc2kgKmRzaW0pOwo+ICsJdm9pZCAoKnVucmVnaXN0ZXJfaG9zdCkoc3RydWN0IGV4 eW5vc19kc2kgKmRzaW0pOwo+ICsJaW50ICgqYXR0YWNoKShzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNp bSwgc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZGV2aWNlKTsKPiArCWludCAoKmRldGFjaCkoc3Ry dWN0IGV4eW5vc19kc2kgKmRzaW0sIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRldmljZSk7Cj4g K307Cj4gKwo+ICAgc3RydWN0IGV4eW5vc19kc2lfcGxhdF9kYXRhIHsKPiAgIAllbnVtIGV4eW5v c19kc2lfdHlwZSBod190eXBlOwo+ICsJY29uc3Qgc3RydWN0IGV4eW5vc19kc2ltX2hvc3Rfb3Bz ICpob3N0X29wczsKPiAgIH07Cj4gICAKPiAgIHN0cnVjdCBleHlub3NfZHNpIHsKPiAtCXN0cnVj dCBkcm1fZW5jb2RlciBlbmNvZGVyOwo+ICAgCXN0cnVjdCBtaXBpX2RzaV9ob3N0IGRzaV9ob3N0 Owo+ICAgCXN0cnVjdCBkcm1fYnJpZGdlIGJyaWRnZTsKPiAgIAlzdHJ1Y3QgZHJtX2JyaWRnZSAq b3V0X2JyaWRnZTsKPiBAQCAtMzE2LDYgKzMyNSwxMiBAQCBzdHJ1Y3QgZXh5bm9zX2RzaSB7Cj4g ICAKPiAgIAljb25zdCBzdHJ1Y3QgZXh5bm9zX2RzaV9kcml2ZXJfZGF0YSAqZHJpdmVyX2RhdGE7 Cj4gICAJY29uc3Qgc3RydWN0IGV4eW5vc19kc2lfcGxhdF9kYXRhICpwbGF0X2RhdGE7Cj4gKwo+ ICsJdm9pZCAqcHJpdjsKPiArfTsKPiArCj4gK3N0cnVjdCBleHlub3NfZHNpX2VuYyB7Cj4gKwlz dHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKPiAgIH07Cj4gICAKPiAgICNkZWZpbmUgaG9zdF90 b19kc2koaG9zdCkgY29udGFpbmVyX29mKGhvc3QsIHN0cnVjdCBleHlub3NfZHNpLCBkc2lfaG9z dCkKPiBAQCAtMTMxOSwxMCArMTMzNCwxMSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZXh5bm9zX2Rz aV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQo+ICAgCj4gICBzdGF0aWMgaXJxcmV0dXJuX3Qg ZXh5bm9zX2RzaV90ZV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4gICB7Cj4g LQlzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpID0gKHN0cnVjdCBleHlub3NfZHNpICopZGV2X2lkOwo+ ICsJc3RydWN0IGV4eW5vc19kc2kgKmRzaW0gPSAoc3RydWN0IGV4eW5vc19kc2kgKilkZXZfaWQ7 CgpJcyB0aGUgcmVuYW1lIHJlYWxseSBuZWVkZWQgID8KCj4gKwlzdHJ1Y3QgZXh5bm9zX2RzaV9l bmMgKmRzaSA9IGRzaW0tPnByaXY7CgpDYWxsIHRoaXMgdmFyaWFibGUgc29tZXRoaW5nIGVsc2Ug LCBsaWtlIGRzaV9lbmMgLCBhbmQgeW91IHNob3VsZG4ndCAKbmVlZCB0aGUgcmVuYW1lIGFib3Zl IC4uLgoKPiAgIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmZHNpLT5lbmNvZGVyOwo+ ICAgCj4gLQlpZiAoZHNpLT5zdGF0ZSAmIERTSU1fU1RBVEVfVklET1VUX0FWQUlMQUJMRSkKPiAr CWlmIChkc2ltLT5zdGF0ZSAmIERTSU1fU1RBVEVfVklET1VUX0FWQUlMQUJMRSkKCi4uLiBhbmQg dGhlIHJlbmFtZSBoZXJlIC4KCj4gICAJCWV4eW5vc19kcm1fY3J0Y190ZV9oYW5kbGVyKGVuY29k ZXItPmNydGMpOwo+ICAgCj4gICAJcmV0dXJuIElSUV9IQU5ETEVEOwoKClsuLi5dCgo+ICAgc3Rh dGljIHZvaWQgZXh5bm9zX2RzaV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2 aWNlICptYXN0ZXIsCj4gICAJCQkJdm9pZCAqZGF0YSkKPiAgIHsKPiAtCXN0cnVjdCBleHlub3Nf ZHNpICpkc2kgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBleHlub3NfZHNpICpk c2ltID0gZGV2X2dldF9kcnZkYXRhKGRldik7CgpQbGVhc2UgYXZvaWQgdGhlIHZhcmlhYmxlIHJl bmFtZXMgZ2xvYmFsbHksIHRoYXQgc2hvdWxkIHNpbXBsaWZ5IHRoaXMgCnBhdGNoIGFuZCByZW1v dmUgdW5yZWxhdGVkIGNoYW5nZXMuCgo+IC0JZXh5bm9zX2RzaV9hdG9taWNfZGlzYWJsZSgmZHNp LT5icmlkZ2UsIE5VTEwpOwo+ICsJZHNpbS0+YnJpZGdlLmZ1bmNzLT5hdG9taWNfZGlzYWJsZSgm ZHNpbS0+YnJpZGdlLCBOVUxMKTsKPiAgIAo+IC0JbWlwaV9kc2lfaG9zdF91bnJlZ2lzdGVyKCZk c2ktPmRzaV9ob3N0KTsKPiArCW1pcGlfZHNpX2hvc3RfdW5yZWdpc3RlcigmZHNpbS0+ZHNpX2hv c3QpOwo+ICAgfQoKWy4uLl0KCldpdGggdGhhdCBmaXhlZDoKClJldmlld2VkLWJ5OiBNYXJlayBW YXN1dCA8bWFyZXhAZGVueC5kZT4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D59A1C54E94 for ; Tue, 24 Jan 2023 21:04:42 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C1ADC10E254; Tue, 24 Jan 2023 21:04:41 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7703110E254 for ; Tue, 24 Jan 2023 21:04:40 +0000 (UTC) Received: from [127.0.0.1] (p578adb1c.dip0.t-ipconnect.de [87.138.219.28]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 9B878855B5; Tue, 24 Jan 2023 22:04:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1674594278; bh=i2Tf2xUr41a1Xt/qiigFI3GfvYyaAwEqq7DZFLV5OG0=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=uMQwwuly9x8Spq6TaC4a6R+bQ3/w1Ickun6Fdv4I6v23C3v56RccT0S2JBZvgK96I vT9O9IF4HjCwZqGNIsR5XzkCh1b29Q2ULS4Y4s0fjsyg2AkLywaIeh6Wq5z0BxJPDT Z3Lqa0iKRMxyCWih0wFtSkdPIwDdbU9zRDLJhmrw906/hCt54ww13JJgPcZDemgcc8 xsKRGxc/XhHB3dBiQOk0b9113EeMpdCA/uNCq+cw+pht3TrsvBAU4NiJUUGV6osXFl Zm0xef5rTHy8zh8dGQ5tmEkedbwl/Ji1BOCDNrqHCh3u1Fdy8eevGc9HGeeCnhVICP upwXyE1+nhMUw== Message-ID: Date: Tue, 24 Jan 2023 22:04:37 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [RESEND PATCH v11 12/18] drm: exynos: dsi: Consolidate component and bridge Content-Language: en-US To: Jagan Teki , Andrzej Hajda , Inki Dae , Marek Szyprowski , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Frieder Schrempf , Fancy Fang , Tim Harvey , Michael Nazzareno Trimarchi , Adam Ford , Neil Armstrong , Robert Foss , Laurent Pinchart , Tommaso Merciai References: <20230123151212.269082-1-jagan@amarulasolutions.com> <20230123151212.269082-13-jagan@amarulasolutions.com> From: Marek Vasut In-Reply-To: <20230123151212.269082-13-jagan@amarulasolutions.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-samsung-soc@vger.kernel.org, Matteo Lisi , dri-devel@lists.freedesktop.org, NXP Linux Team , linux-amarula , linux-arm-kernel@lists.infradead.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On 1/23/23 16:12, Jagan Teki wrote: > DSI host registration, attach and detach operations are quite > different for the component and bridge-based DRM drivers. > > Supporting generic bridge driver to use both component and bridge > based DRM drivers can be tricky and would require additional host > related operation hooks. > > Add host operation hooks for registering and unregistering Exynos > and generic drivers, where Exynos hooks are used in existing Exynos > component based DRM drivers and generic hooks are used in i.MX8M > bridge based DRM drivers. > > Add host attach and detach operation hooks for Exynos component > DRM drivers and those get invoked while DSI core host attach and > detach gets called. > > Signed-off-by: Marek Szyprowski > Signed-off-by: Jagan Teki > --- > Changes for v11: > - none > Changes for v10: > - split from previous series patch > "drm: bridge: Generalize Exynos-DSI driver into a Samsung DSIM bridge" > > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 179 ++++++++++++++++++------ > 1 file changed, 140 insertions(+), 39 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > index 7afbbe30d1d3..fc7f00ab01b4 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > @@ -250,6 +250,8 @@ struct exynos_dsi_transfer { > u16 rx_done; > }; > > +struct exynos_dsi; Is this forward declaration really necessary ? Can't the structures below be reordered to get rid of this ? > #define DSIM_STATE_ENABLED BIT(0) > #define DSIM_STATE_INITIALIZED BIT(1) > #define DSIM_STATE_CMD_LPM BIT(2) > @@ -281,12 +283,19 @@ struct exynos_dsi_driver_data { > const unsigned int *reg_values; > }; > > +struct exynos_dsim_host_ops { > + int (*register_host)(struct exynos_dsi *dsim); > + void (*unregister_host)(struct exynos_dsi *dsim); > + int (*attach)(struct exynos_dsi *dsim, struct mipi_dsi_device *device); > + int (*detach)(struct exynos_dsi *dsim, struct mipi_dsi_device *device); > +}; > + > struct exynos_dsi_plat_data { > enum exynos_dsi_type hw_type; > + const struct exynos_dsim_host_ops *host_ops; > }; > > struct exynos_dsi { > - struct drm_encoder encoder; > struct mipi_dsi_host dsi_host; > struct drm_bridge bridge; > struct drm_bridge *out_bridge; > @@ -316,6 +325,12 @@ struct exynos_dsi { > > const struct exynos_dsi_driver_data *driver_data; > const struct exynos_dsi_plat_data *plat_data; > + > + void *priv; > +}; > + > +struct exynos_dsi_enc { > + struct drm_encoder encoder; > }; > > #define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host) > @@ -1319,10 +1334,11 @@ static irqreturn_t exynos_dsi_irq(int irq, void *dev_id) > > static irqreturn_t exynos_dsi_te_irq_handler(int irq, void *dev_id) > { > - struct exynos_dsi *dsi = (struct exynos_dsi *)dev_id; > + struct exynos_dsi *dsim = (struct exynos_dsi *)dev_id; Is the rename really needed ? > + struct exynos_dsi_enc *dsi = dsim->priv; Call this variable something else , like dsi_enc , and you shouldn't need the rename above ... > struct drm_encoder *encoder = &dsi->encoder; > > - if (dsi->state & DSIM_STATE_VIDOUT_AVAILABLE) > + if (dsim->state & DSIM_STATE_VIDOUT_AVAILABLE) ... and the rename here . > exynos_drm_crtc_te_handler(encoder->crtc); > > return IRQ_HANDLED; [...] > static void exynos_dsi_unbind(struct device *dev, struct device *master, > void *data) > { > - struct exynos_dsi *dsi = dev_get_drvdata(dev); > + struct exynos_dsi *dsim = dev_get_drvdata(dev); Please avoid the variable renames globally, that should simplify this patch and remove unrelated changes. > - exynos_dsi_atomic_disable(&dsi->bridge, NULL); > + dsim->bridge.funcs->atomic_disable(&dsim->bridge, NULL); > > - mipi_dsi_host_unregister(&dsi->dsi_host); > + mipi_dsi_host_unregister(&dsim->dsi_host); > } [...] With that fixed: Reviewed-by: Marek Vasut