From: Daniel Vetter <daniel@ffwll.ch> To: "james qian wang (Arm Technology China)" <james.qian.wang@arm.com> Cc: Mihail Atanassov <Mihail.Atanassov@arm.com>, David Airlie <airlied@linux.ie>, nd <nd@arm.com>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "dri-devel@lists.freedesktop.org" <dri-devel@lists.freedesktop.org> Subject: Re: [01/30] drm: Introduce drm_bridge_init() Date: Mon, 2 Dec 2019 09:49:35 +0100 [thread overview] Message-ID: <20191202084935.GW624164@phenom.ffwll.local> (raw) In-Reply-To: <20191202055459.GA25729@jamwan02-TSP300> On Mon, Dec 02, 2019 at 05:55:06AM +0000, james qian wang (Arm Technology China) wrote: > On Tue, Nov 26, 2019 at 01:15:59PM +0000, Mihail Atanassov wrote: > > A simple convenience function to initialize the struct drm_bridge. > > > > Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com> > > --- > > drivers/gpu/drm/drm_bridge.c | 29 +++++++++++++++++++++++++++++ > > include/drm/drm_bridge.h | 4 ++++ > > 2 files changed, 33 insertions(+) > > > > diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c > > index cba537c99e43..cbe680aa6eac 100644 > > --- a/drivers/gpu/drm/drm_bridge.c > > +++ b/drivers/gpu/drm/drm_bridge.c > > @@ -89,6 +89,35 @@ void drm_bridge_remove(struct drm_bridge *bridge) > > } > > EXPORT_SYMBOL(drm_bridge_remove); > > > > +/** > > + * drm_bridge_init - initialise a drm_bridge structure > > + * > > + * @bridge: bridge control structure > > + * @funcs: control functions > > + * @dev: device > > + * @timings: timing specification for the bridge; optional (may be NULL) > > + * @driver_private: pointer to the bridge driver internal context (may be NULL) > > + */ > > +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev, > > + const struct drm_bridge_funcs *funcs, > > + const struct drm_bridge_timings *timings, > > + void *driver_private) > > +{ > > + WARN_ON(!funcs); > > + > > + bridge->dev = NULL; > > + bridge->encoder = NULL; > > + bridge->next = NULL; > > + > > +#ifdef CONFIG_OF > > + bridge->of_node = dev->of_node; > > +#endif > > + bridge->timings = timings; > > + bridge->funcs = funcs; > > + bridge->driver_private = driver_private; > > Can we directly put drm_bridge_add() here. then > - User always need to call bridge_init and add together. > - Consistent with others like drm_plane/crtc_init which directly has > drm_mode_object_add() in it. Uh no, the trouble here is that drm_bridge_add should actually be called _register, because it publishes the bridge to the world. I think we even have a todo item to rename _add to _register ... Once that's done the bridge can't be changed anymore, all init code must have completed. So often you need a bit of code between _init() and _register(). drm_mode_object_add is different since for mode objects it doesn't publish it to the world, that's done with drm_dev_register and drm_connector_register. drm_mode_object_add just does a bit of internal house keeping. -Daniel > > James. > > +} > > +EXPORT_SYMBOL(drm_bridge_init); > > + > > /** > > * drm_bridge_attach - attach the bridge to an encoder's chain > > * > > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h > > index c0a2286a81e9..d6d9d5301551 100644 > > --- a/include/drm/drm_bridge.h > > +++ b/include/drm/drm_bridge.h > > @@ -402,6 +402,10 @@ struct drm_bridge { > > > > void drm_bridge_add(struct drm_bridge *bridge); > > void drm_bridge_remove(struct drm_bridge *bridge); > > +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev, > > + const struct drm_bridge_funcs *funcs, > > + const struct drm_bridge_timings *timings, > > + void *driver_private); > > struct drm_bridge *of_drm_find_bridge(struct device_node *np); > > int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge, > > struct drm_bridge *previous); > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch> To: "james qian wang (Arm Technology China)" <james.qian.wang@arm.com> Cc: David Airlie <airlied@linux.ie>, nd <nd@arm.com>, Mihail Atanassov <Mihail.Atanassov@arm.com>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "dri-devel@lists.freedesktop.org" <dri-devel@lists.freedesktop.org> Subject: Re: [01/30] drm: Introduce drm_bridge_init() Date: Mon, 2 Dec 2019 09:49:35 +0100 [thread overview] Message-ID: <20191202084935.GW624164@phenom.ffwll.local> (raw) In-Reply-To: <20191202055459.GA25729@jamwan02-TSP300> On Mon, Dec 02, 2019 at 05:55:06AM +0000, james qian wang (Arm Technology China) wrote: > On Tue, Nov 26, 2019 at 01:15:59PM +0000, Mihail Atanassov wrote: > > A simple convenience function to initialize the struct drm_bridge. > > > > Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com> > > --- > > drivers/gpu/drm/drm_bridge.c | 29 +++++++++++++++++++++++++++++ > > include/drm/drm_bridge.h | 4 ++++ > > 2 files changed, 33 insertions(+) > > > > diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c > > index cba537c99e43..cbe680aa6eac 100644 > > --- a/drivers/gpu/drm/drm_bridge.c > > +++ b/drivers/gpu/drm/drm_bridge.c > > @@ -89,6 +89,35 @@ void drm_bridge_remove(struct drm_bridge *bridge) > > } > > EXPORT_SYMBOL(drm_bridge_remove); > > > > +/** > > + * drm_bridge_init - initialise a drm_bridge structure > > + * > > + * @bridge: bridge control structure > > + * @funcs: control functions > > + * @dev: device > > + * @timings: timing specification for the bridge; optional (may be NULL) > > + * @driver_private: pointer to the bridge driver internal context (may be NULL) > > + */ > > +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev, > > + const struct drm_bridge_funcs *funcs, > > + const struct drm_bridge_timings *timings, > > + void *driver_private) > > +{ > > + WARN_ON(!funcs); > > + > > + bridge->dev = NULL; > > + bridge->encoder = NULL; > > + bridge->next = NULL; > > + > > +#ifdef CONFIG_OF > > + bridge->of_node = dev->of_node; > > +#endif > > + bridge->timings = timings; > > + bridge->funcs = funcs; > > + bridge->driver_private = driver_private; > > Can we directly put drm_bridge_add() here. then > - User always need to call bridge_init and add together. > - Consistent with others like drm_plane/crtc_init which directly has > drm_mode_object_add() in it. Uh no, the trouble here is that drm_bridge_add should actually be called _register, because it publishes the bridge to the world. I think we even have a todo item to rename _add to _register ... Once that's done the bridge can't be changed anymore, all init code must have completed. So often you need a bit of code between _init() and _register(). drm_mode_object_add is different since for mode objects it doesn't publish it to the world, that's done with drm_dev_register and drm_connector_register. drm_mode_object_add just does a bit of internal house keeping. -Daniel > > James. > > +} > > +EXPORT_SYMBOL(drm_bridge_init); > > + > > /** > > * drm_bridge_attach - attach the bridge to an encoder's chain > > * > > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h > > index c0a2286a81e9..d6d9d5301551 100644 > > --- a/include/drm/drm_bridge.h > > +++ b/include/drm/drm_bridge.h > > @@ -402,6 +402,10 @@ struct drm_bridge { > > > > void drm_bridge_add(struct drm_bridge *bridge); > > void drm_bridge_remove(struct drm_bridge *bridge); > > +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev, > > + const struct drm_bridge_funcs *funcs, > > + const struct drm_bridge_timings *timings, > > + void *driver_private); > > struct drm_bridge *of_drm_find_bridge(struct device_node *np); > > int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge, > > struct drm_bridge *previous); > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-12-02 8:49 UTC|newest] Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-26 13:15 [PATCH 00/30] drm/bridge: Add device links for lifetime control Mihail Atanassov 2019-11-26 13:15 ` Mihail Atanassov 2019-11-26 13:15 ` Mihail Atanassov 2019-11-26 13:15 ` [PATCH 01/30] drm: Introduce drm_bridge_init() Mihail Atanassov 2019-11-26 13:15 ` Mihail Atanassov 2019-11-26 14:26 ` Daniel Vetter 2019-11-26 14:26 ` Daniel Vetter 2019-11-26 15:55 ` Mihail Atanassov 2019-11-26 15:55 ` Mihail Atanassov 2019-11-26 17:04 ` Daniel Vetter 2019-11-26 17:04 ` Daniel Vetter 2019-11-26 19:24 ` Sam Ravnborg 2019-11-26 19:24 ` Sam Ravnborg 2019-11-27 11:05 ` Mihail Atanassov 2019-11-27 11:05 ` Mihail Atanassov 2019-11-27 11:05 ` Mihail Atanassov 2019-11-27 11:31 ` Daniel Vetter 2019-11-27 11:31 ` Daniel Vetter 2019-12-02 5:55 ` [01/30] " james qian wang (Arm Technology China) 2019-12-02 5:55 ` james qian wang (Arm Technology China) 2019-12-02 8:49 ` Daniel Vetter [this message] 2019-12-02 8:49 ` Daniel Vetter 2019-12-03 6:12 ` james qian wang (Arm Technology China) 2019-12-03 6:12 ` james qian wang (Arm Technology China) 2019-11-26 13:16 ` [PATCH 02/30] drm/bridge: adv7511: Use drm_bridge_init() Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 03/30] drm/bridge: anx6345: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 04/30] drm/bridge: anx78xx: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 05/30] drm/bridge: cdns: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 06/30] drm/bridge: dumb-vga-dac: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 07/30] drm/bridge: lvds-encoder: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 08/30] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 09/30] drm/bridge: nxp-ptn3460: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 10/30] drm/bridge: panel: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 11/30] drm/bridge: ps8622: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 12/30] drm/bridge: sii902x: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 13/30] gpu: drm: bridge: sii9234: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 14/30] drm/bridge: sil_sii8620: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 15/30] drm/bridge: dw-hdmi: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 17/30] drm/bridge: tc358764: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 16/30] drm/bridge/synopsys: dsi: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 18/30] drm/bridge: tc358767: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 19/30] drm/bridge: thc63: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 20/30] drm/bridge: ti-sn65dsi86: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 21/30] drm/bridge: ti-tfp410: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 22/30] drm/exynos: mic: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-12-03 4:54 ` Inki Dae 2019-12-03 4:54 ` Inki Dae 2019-12-03 4:54 ` Inki Dae 2019-11-26 13:16 ` [PATCH 23/30] drm/i2c: tda998x: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 24/30] drm/mcde: dsi: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-28 9:08 ` Linus Walleij 2019-11-28 9:08 ` Linus Walleij 2019-11-26 13:16 ` [PATCH 25/30] drm/mediatek: hdmi: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 26/30] drm: rcar-du: lvds: " Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 27/30] drm: rcar-du: lvds: Don't set drm_bridge private pointer Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 28/30] drm/sti: sti_vdo: Use drm_bridge_init() Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 19:37 ` Sam Ravnborg 2019-11-26 19:37 ` Sam Ravnborg 2019-11-27 11:02 ` Mihail Atanassov 2019-11-27 11:02 ` Mihail Atanassov 2019-11-27 16:19 ` Sam Ravnborg 2019-11-27 16:19 ` Sam Ravnborg 2019-11-27 16:30 ` Benjamin Gaignard 2019-11-27 16:30 ` Benjamin Gaignard 2019-11-26 13:16 ` [PATCH 29/30] drm/bridge: add support for device links to bridge Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 14:35 ` Daniel Vetter 2019-11-26 14:35 ` Daniel Vetter 2019-11-26 15:55 ` Mihail Atanassov 2019-11-26 15:55 ` Mihail Atanassov 2019-11-28 15:33 ` Mihail Atanassov 2019-11-28 15:33 ` Mihail Atanassov 2019-11-26 13:16 ` [PATCH 30/30] drm/komeda: Use drm_bridge interface for pipe outputs Mihail Atanassov 2019-11-26 13:16 ` Mihail Atanassov 2019-11-26 15:27 ` [PATCH 00/30] drm/bridge: Add device links for lifetime control Russell King - ARM Linux admin 2019-11-26 15:27 ` Russell King - ARM Linux admin 2019-11-26 15:27 ` Russell King - ARM Linux admin 2019-11-26 15:55 ` Mihail Atanassov 2019-11-26 15:55 ` Mihail Atanassov 2019-11-26 15:55 ` Mihail Atanassov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20191202084935.GW624164@phenom.ffwll.local \ --to=daniel@ffwll.ch \ --cc=Mihail.Atanassov@arm.com \ --cc=airlied@linux.ie \ --cc=dri-devel@lists.freedesktop.org \ --cc=james.qian.wang@arm.com \ --cc=linux-kernel@vger.kernel.org \ --cc=nd@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.