Message ID | 20191204114732.28514-1-mihail.atanassov@arm.com (mailing list archive) |
---|---|
Headers | show |
Series | drm/bridge: Consolidate initialization | expand |
Hi Mihail, Thank you for the patches. On Wed, Dec 04, 2019 at 11:48:01AM +0000, Mihail Atanassov wrote: > Hi all, > > I've dropped the fun parts of this series since they need more work, but > figured drm_bridge_init() as a concept is still valuable on its own (and > I think I'll need it to roll out device links for registered bridges), > so here goes. > > v2: > - expanded commit messages and added some extra bridge-related > documentation (Daniel) > - dropped v1 patches 29 and 30: 29 needs more work, and 30 depends on > it > - added all remaining drm_bridge implementers, found by searching for > drm_bridge_funcs which is mandatory for any bridge; new uses in > patches 3, 27, and 28 (Sam) > - due to the above, I've decided to squash all analogix changes into > one patch For patches 02, 04 to 11 and 13 to 17, 19 to 24, and 27 to 28, Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > v1 [https://patchwork.freedesktop.org/series/70039/] cover text below: > > This series adds device links support to drm_bridge. The motivation > behind it is that a drm_bridge in a module could get removed under the > feet of the bridge user without warning, so we need a way to remove and > reprobe the client as needed to avoid peering into the void. > > 1: Add a drm_bridge_init() function which wraps all initialisation of > the structure prior to calling drm_bridge_add(). > > 2-26,28: Apply the drm_bridge_init() refactor to every bridge that uses > drm_bridge_add(). > > 27: Minor cleanup in rcar-du. > > 29: Add of_drm_find_bridge_devlink() which functions the same as > of_drm_find_bridge() plus adds a device device link from the owning > drm_device to the bridge device. > > 30: As a motivating example, convert komeda to exclusively use > drm_bridge for its pipe outputs; this isn't a regression in usability > any more since device links bring the same automatic remove/reprobe > feature as components. > > Mihail Atanassov (28): > drm: Introduce drm_bridge_init() > drm/bridge: adv7511: Use drm_bridge_init() > drm/bridge/analogix: Use drm_bridge_init() > drm/bridge: cdns: Use drm_bridge_init() > drm/bridge: dumb-vga-dac: Use drm_bridge_init() > drm/bridge: lvds-encoder: Use drm_bridge_init() > drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: Use drm_bridge_init() > drm/bridge: nxp-ptn3460: Use drm_bridge_init() > drm/bridge: panel: Use drm_bridge_init() > drm/bridge: ps8622: Use drm_bridge_init() > drm/bridge: sii902x: Use drm_bridge_init() > gpu: drm: bridge: sii9234: Use drm_bridge_init() > drm/bridge: sil_sii8620: Use drm_bridge_init() > drm/bridge: dw-hdmi: Use drm_bridge_init() > drm/bridge/synopsys: dsi: Use drm_bridge_init() > drm/bridge: tc358764: Use drm_bridge_init() > drm/bridge: tc358767: Use drm_bridge_init() > drm/bridge: thc63: Use drm_bridge_init() > drm/bridge: ti-sn65dsi86: Use drm_bridge_init() > drm/bridge: ti-tfp410: Use drm_bridge_init() > drm/exynos: mic: Use drm_bridge_init() > drm/i2c: tda998x: Use drm_bridge_init() > drm/mcde: dsi: Use drm_bridge_init() > drm/mediatek: hdmi: Use drm_bridge_init() > drm: rcar-du: lvds: Use drm_bridge_init() > drm: rcar-du: lvds: Don't set drm_bridge private pointer > drm/sti: Use drm_bridge_init() > drm/msm: Use drm_bridge_init() > > drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 5 ++- > .../drm/bridge/analogix/analogix-anx6345.c | 5 ++- > .../drm/bridge/analogix/analogix-anx78xx.c | 8 ++--- > .../drm/bridge/analogix/analogix_dp_core.c | 5 ++- > drivers/gpu/drm/bridge/cdns-dsi.c | 4 +-- > drivers/gpu/drm/bridge/dumb-vga-dac.c | 6 ++-- > drivers/gpu/drm/bridge/lvds-encoder.c | 7 ++-- > .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 4 +-- > drivers/gpu/drm/bridge/nxp-ptn3460.c | 4 +-- > drivers/gpu/drm/bridge/panel.c | 7 ++-- > drivers/gpu/drm/bridge/parade-ps8622.c | 3 +- > drivers/gpu/drm/bridge/sii902x.c | 5 ++- > drivers/gpu/drm/bridge/sii9234.c | 3 +- > drivers/gpu/drm/bridge/sil-sii8620.c | 3 +- > drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 7 ++-- > drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 7 ++-- > drivers/gpu/drm/bridge/tc358764.c | 4 +-- > drivers/gpu/drm/bridge/tc358767.c | 3 +- > drivers/gpu/drm/bridge/thc63lvd1024.c | 7 ++-- > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 5 ++- > drivers/gpu/drm/bridge/ti-tfp410.c | 5 ++- > drivers/gpu/drm/drm_bridge.c | 34 ++++++++++++++++++- > drivers/gpu/drm/exynos/exynos_drm_mic.c | 8 +---- > drivers/gpu/drm/i2c/tda998x_drv.c | 6 +--- > drivers/gpu/drm/mcde/mcde_dsi.c | 3 +- > drivers/gpu/drm/mediatek/mtk_hdmi.c | 4 +-- > drivers/gpu/drm/msm/dsi/dsi_manager.c | 4 +-- > drivers/gpu/drm/msm/edp/edp_bridge.c | 3 +- > drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 4 +-- > drivers/gpu/drm/rcar-du/rcar_lvds.c | 5 ++- > drivers/gpu/drm/sti/sti_dvo.c | 4 +-- > drivers/gpu/drm/sti/sti_hda.c | 3 +- > drivers/gpu/drm/sti/sti_hdmi.c | 3 +- > include/drm/drm_bridge.h | 15 +++++++- > 34 files changed, 100 insertions(+), 103 deletions(-)
Hi Mihail, On 04/12/2019 12:48, Mihail Atanassov wrote: > Hi all, > > I've dropped the fun parts of this series since they need more work, but > figured drm_bridge_init() as a concept is still valuable on its own (and > I think I'll need it to roll out device links for registered bridges), > so here goes. > > v2: > - expanded commit messages and added some extra bridge-related > documentation (Daniel) > - dropped v1 patches 29 and 30: 29 needs more work, and 30 depends on > it > - added all remaining drm_bridge implementers, found by searching for > drm_bridge_funcs which is mandatory for any bridge; new uses in > patches 3, 27, and 28 (Sam) > - due to the above, I've decided to squash all analogix changes into > one patch > > --- > v1 [https://patchwork.freedesktop.org/series/70039/] cover text below: > > This series adds device links support to drm_bridge. The motivation > behind it is that a drm_bridge in a module could get removed under the > feet of the bridge user without warning, so we need a way to remove and > reprobe the client as needed to avoid peering into the void. > > 1: Add a drm_bridge_init() function which wraps all initialisation of > the structure prior to calling drm_bridge_add(). > > 2-26,28: Apply the drm_bridge_init() refactor to every bridge that uses > drm_bridge_add(). > > 27: Minor cleanup in rcar-du. > > 29: Add of_drm_find_bridge_devlink() which functions the same as > of_drm_find_bridge() plus adds a device device link from the owning > drm_device to the bridge device. > > 30: As a motivating example, convert komeda to exclusively use > drm_bridge for its pipe outputs; this isn't a regression in usability > any more since device links bring the same automatic remove/reprobe > feature as components. > > Mihail Atanassov (28): > drm: Introduce drm_bridge_init() > drm/bridge: adv7511: Use drm_bridge_init() > drm/bridge/analogix: Use drm_bridge_init() > drm/bridge: cdns: Use drm_bridge_init() > drm/bridge: dumb-vga-dac: Use drm_bridge_init() > drm/bridge: lvds-encoder: Use drm_bridge_init() > drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: Use drm_bridge_init() > drm/bridge: nxp-ptn3460: Use drm_bridge_init() > drm/bridge: panel: Use drm_bridge_init() > drm/bridge: ps8622: Use drm_bridge_init() > drm/bridge: sii902x: Use drm_bridge_init() > gpu: drm: bridge: sii9234: Use drm_bridge_init() > drm/bridge: sil_sii8620: Use drm_bridge_init() > drm/bridge: dw-hdmi: Use drm_bridge_init() > drm/bridge/synopsys: dsi: Use drm_bridge_init() > drm/bridge: tc358764: Use drm_bridge_init() > drm/bridge: tc358767: Use drm_bridge_init() > drm/bridge: thc63: Use drm_bridge_init() > drm/bridge: ti-sn65dsi86: Use drm_bridge_init() > drm/bridge: ti-tfp410: Use drm_bridge_init() > drm/exynos: mic: Use drm_bridge_init() > drm/i2c: tda998x: Use drm_bridge_init() > drm/mcde: dsi: Use drm_bridge_init() > drm/mediatek: hdmi: Use drm_bridge_init() > drm: rcar-du: lvds: Use drm_bridge_init() > drm: rcar-du: lvds: Don't set drm_bridge private pointer > drm/sti: Use drm_bridge_init() > drm/msm: Use drm_bridge_init() > > drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 5 ++- > .../drm/bridge/analogix/analogix-anx6345.c | 5 ++- > .../drm/bridge/analogix/analogix-anx78xx.c | 8 ++--- > .../drm/bridge/analogix/analogix_dp_core.c | 5 ++- > drivers/gpu/drm/bridge/cdns-dsi.c | 4 +-- > drivers/gpu/drm/bridge/dumb-vga-dac.c | 6 ++-- > drivers/gpu/drm/bridge/lvds-encoder.c | 7 ++-- > .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 4 +-- > drivers/gpu/drm/bridge/nxp-ptn3460.c | 4 +-- > drivers/gpu/drm/bridge/panel.c | 7 ++-- > drivers/gpu/drm/bridge/parade-ps8622.c | 3 +- > drivers/gpu/drm/bridge/sii902x.c | 5 ++- > drivers/gpu/drm/bridge/sii9234.c | 3 +- > drivers/gpu/drm/bridge/sil-sii8620.c | 3 +- > drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 7 ++-- > drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 7 ++-- > drivers/gpu/drm/bridge/tc358764.c | 4 +-- > drivers/gpu/drm/bridge/tc358767.c | 3 +- > drivers/gpu/drm/bridge/thc63lvd1024.c | 7 ++-- > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 5 ++- > drivers/gpu/drm/bridge/ti-tfp410.c | 5 ++- > drivers/gpu/drm/drm_bridge.c | 34 ++++++++++++++++++- > drivers/gpu/drm/exynos/exynos_drm_mic.c | 8 +---- > drivers/gpu/drm/i2c/tda998x_drv.c | 6 +--- > drivers/gpu/drm/mcde/mcde_dsi.c | 3 +- > drivers/gpu/drm/mediatek/mtk_hdmi.c | 4 +-- > drivers/gpu/drm/msm/dsi/dsi_manager.c | 4 +-- > drivers/gpu/drm/msm/edp/edp_bridge.c | 3 +- > drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 4 +-- > drivers/gpu/drm/rcar-du/rcar_lvds.c | 5 ++- > drivers/gpu/drm/sti/sti_dvo.c | 4 +-- > drivers/gpu/drm/sti/sti_hda.c | 3 +- > drivers/gpu/drm/sti/sti_hdmi.c | 3 +- > include/drm/drm_bridge.h | 15 +++++++- > 34 files changed, 100 insertions(+), 103 deletions(-) > Can you check it doesn't collides with Boris 1-7 of "drm: Add support for bus-format negotiation" patches he just pushed on drm-misc-next ? Neil
On Monday, 9 December 2019 10:39:07 GMT Neil Armstrong wrote: > Hi Mihail, Hi Neil, > > On 04/12/2019 12:48, Mihail Atanassov wrote: > > Hi all, > > > > I've dropped the fun parts of this series since they need more work, but > > figured drm_bridge_init() as a concept is still valuable on its own (and > > I think I'll need it to roll out device links for registered bridges), > > so here goes. > > > > v2: > > - expanded commit messages and added some extra bridge-related > > documentation (Daniel) > > - dropped v1 patches 29 and 30: 29 needs more work, and 30 depends on > > it > > - added all remaining drm_bridge implementers, found by searching for > > drm_bridge_funcs which is mandatory for any bridge; new uses in > > patches 3, 27, and 28 (Sam) > > - due to the above, I've decided to squash all analogix changes into > > one patch > > > > --- > > v1 [https://patchwork.freedesktop.org/series/70039/] cover text below: > > > > This series adds device links support to drm_bridge. The motivation > > behind it is that a drm_bridge in a module could get removed under the > > feet of the bridge user without warning, so we need a way to remove and > > reprobe the client as needed to avoid peering into the void. > > > > 1: Add a drm_bridge_init() function which wraps all initialisation of > > the structure prior to calling drm_bridge_add(). > > > > 2-26,28: Apply the drm_bridge_init() refactor to every bridge that uses > > drm_bridge_add(). > > > > 27: Minor cleanup in rcar-du. > > > > 29: Add of_drm_find_bridge_devlink() which functions the same as > > of_drm_find_bridge() plus adds a device device link from the owning > > drm_device to the bridge device. > > > > 30: As a motivating example, convert komeda to exclusively use > > drm_bridge for its pipe outputs; this isn't a regression in usability > > any more since device links bring the same automatic remove/reprobe > > feature as components. > > > > Mihail Atanassov (28): > > drm: Introduce drm_bridge_init() > > drm/bridge: adv7511: Use drm_bridge_init() > > drm/bridge/analogix: Use drm_bridge_init() > > drm/bridge: cdns: Use drm_bridge_init() > > drm/bridge: dumb-vga-dac: Use drm_bridge_init() > > drm/bridge: lvds-encoder: Use drm_bridge_init() > > drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: Use drm_bridge_init() > > drm/bridge: nxp-ptn3460: Use drm_bridge_init() > > drm/bridge: panel: Use drm_bridge_init() > > drm/bridge: ps8622: Use drm_bridge_init() > > drm/bridge: sii902x: Use drm_bridge_init() > > gpu: drm: bridge: sii9234: Use drm_bridge_init() > > drm/bridge: sil_sii8620: Use drm_bridge_init() > > drm/bridge: dw-hdmi: Use drm_bridge_init() > > drm/bridge/synopsys: dsi: Use drm_bridge_init() > > drm/bridge: tc358764: Use drm_bridge_init() > > drm/bridge: tc358767: Use drm_bridge_init() > > drm/bridge: thc63: Use drm_bridge_init() > > drm/bridge: ti-sn65dsi86: Use drm_bridge_init() > > drm/bridge: ti-tfp410: Use drm_bridge_init() > > drm/exynos: mic: Use drm_bridge_init() > > drm/i2c: tda998x: Use drm_bridge_init() > > drm/mcde: dsi: Use drm_bridge_init() > > drm/mediatek: hdmi: Use drm_bridge_init() > > drm: rcar-du: lvds: Use drm_bridge_init() > > drm: rcar-du: lvds: Don't set drm_bridge private pointer > > drm/sti: Use drm_bridge_init() > > drm/msm: Use drm_bridge_init() > > > > drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 5 ++- > > .../drm/bridge/analogix/analogix-anx6345.c | 5 ++- > > .../drm/bridge/analogix/analogix-anx78xx.c | 8 ++--- > > .../drm/bridge/analogix/analogix_dp_core.c | 5 ++- > > drivers/gpu/drm/bridge/cdns-dsi.c | 4 +-- > > drivers/gpu/drm/bridge/dumb-vga-dac.c | 6 ++-- > > drivers/gpu/drm/bridge/lvds-encoder.c | 7 ++-- > > .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 4 +-- > > drivers/gpu/drm/bridge/nxp-ptn3460.c | 4 +-- > > drivers/gpu/drm/bridge/panel.c | 7 ++-- > > drivers/gpu/drm/bridge/parade-ps8622.c | 3 +- > > drivers/gpu/drm/bridge/sii902x.c | 5 ++- > > drivers/gpu/drm/bridge/sii9234.c | 3 +- > > drivers/gpu/drm/bridge/sil-sii8620.c | 3 +- > > drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 7 ++-- > > drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 7 ++-- > > drivers/gpu/drm/bridge/tc358764.c | 4 +-- > > drivers/gpu/drm/bridge/tc358767.c | 3 +- > > drivers/gpu/drm/bridge/thc63lvd1024.c | 7 ++-- > > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 5 ++- > > drivers/gpu/drm/bridge/ti-tfp410.c | 5 ++- > > drivers/gpu/drm/drm_bridge.c | 34 ++++++++++++++++++- > > drivers/gpu/drm/exynos/exynos_drm_mic.c | 8 +---- > > drivers/gpu/drm/i2c/tda998x_drv.c | 6 +--- > > drivers/gpu/drm/mcde/mcde_dsi.c | 3 +- > > drivers/gpu/drm/mediatek/mtk_hdmi.c | 4 +-- > > drivers/gpu/drm/msm/dsi/dsi_manager.c | 4 +-- > > drivers/gpu/drm/msm/edp/edp_bridge.c | 3 +- > > drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 4 +-- > > drivers/gpu/drm/rcar-du/rcar_lvds.c | 5 ++- > > drivers/gpu/drm/sti/sti_dvo.c | 4 +-- > > drivers/gpu/drm/sti/sti_hda.c | 3 +- > > drivers/gpu/drm/sti/sti_hdmi.c | 3 +- > > include/drm/drm_bridge.h | 15 +++++++- > > 34 files changed, 100 insertions(+), 103 deletions(-) > > > > Can you check it doesn't collides with Boris 1-7 of "drm: Add support for bus-format negotiation" patches he just pushed on drm-misc-next ? Thanks for the heads-up. There's no technical conflict but the build fails. I'll fix it for v3 after I get the de-midlayering of drm_bridge done (see https://patchwork.freedesktop.org/patch/343643/?series=70432&rev=1 for context) and the s/bridge->dev/bridge->drm/ patch merged (https://patchwork.freedesktop.org/patch/343824/). > > Neil >