mbox series

[v10,00/12] drm: Add support for bus-format negotiation

Message ID 20200128135514.108171-1-boris.brezillon@collabora.com (mailing list archive)
Headers show
Series drm: Add support for bus-format negotiation | expand

Message

Boris Brezillon Jan. 28, 2020, 1:55 p.m. UTC
Hello,

This patch series aims at adding support for runtime bus-format
negotiation between all elements of the
'encoder -> bridges -> connector/display' section of the pipeline.

In order to support that, we need drm bridges to fully take part in the
atomic state validation process, which requires adding a
drm_bridge_state and a new drm_bridge_funcs.atomic_check() hook.
Once those basic building blocks are in place, we can add new hooks to
allow bus format negotiation (those are called just before
->atomic_check()). The bus format selection is done at runtime by
testing all possible combinations across the whole bridge chain until
one is reported to work.

No fundamental changes in this v10, just collected R-bs, addressed
Philipp's comments and moved the changelog back to the visible part
of the commit message.

I plan to apply patches 1 to 7 soon, so if there's anything you don't
like in there, please say it now. Still waiting for review on the LVDS
bridge and panel stuff.

This patch series is also available here [1].

Thanks,

Boris

[1]https://github.com/bbrezillon/linux-0day/commits/drm-bridge-busfmt-v10

Boris Brezillon (12):
  drm/bridge: Add a drm_bridge_state object
  drm/rcar-du: Plug atomic state hooks to the default implementation
  drm/bridge: analogix: Plug atomic state hooks to the default
    implementation
  drm/bridge: Patch atomic hooks to take a drm_bridge_state
  drm/bridge: Add an ->atomic_check() hook
  drm/bridge: Add the necessary bits to support bus format negotiation
  drm/imx: pd: Use bus format/flags provided by the bridge when
    available
  drm/bridge: lvds-codec: Implement basic bus format negotiation
  dt-bindings: display: bridge: lvds-codec: Add new bus-width prop
  drm/bridge: panel: Propage bus format/flags
  drm/panel: simple: Fix the lt089ac29000 bus_format
  ARM: dts: imx: imx51-zii-rdu1: Fix the display pipeline definition

 .../bindings/display/bridge/lvds-codec.yaml   |   8 +
 arch/arm/boot/dts/imx51-zii-rdu1.dts          |  24 +-
 .../drm/bridge/analogix/analogix_dp_core.c    |  44 +-
 drivers/gpu/drm/bridge/lvds-codec.c           |  64 ++-
 drivers/gpu/drm/bridge/panel.c                |   4 +
 drivers/gpu/drm/drm_atomic.c                  | 116 +++++
 drivers/gpu/drm/drm_atomic_helper.c           |  73 ++-
 drivers/gpu/drm/drm_atomic_state_helper.c     | 103 +++++
 drivers/gpu/drm/drm_bridge.c                  | 437 +++++++++++++++++-
 drivers/gpu/drm/imx/parallel-display.c        | 177 ++++++-
 drivers/gpu/drm/panel/panel-simple.c          |   2 +-
 drivers/gpu/drm/rcar-du/rcar_lvds.c           |  11 +-
 include/drm/drm_atomic.h                      |  76 +++
 include/drm/drm_atomic_helper.h               |   8 +
 include/drm/drm_atomic_state_helper.h         |  13 +
 include/drm/drm_bridge.h                      | 179 ++++++-
 16 files changed, 1258 insertions(+), 81 deletions(-)

Comments

Boris Brezillon Jan. 31, 2020, 3:42 p.m. UTC | #1
On Tue, 28 Jan 2020 14:55:02 +0100
Boris Brezillon <boris.brezillon@collabora.com> wrote:

> Hello,
> 
> This patch series aims at adding support for runtime bus-format
> negotiation between all elements of the
> 'encoder -> bridges -> connector/display' section of the pipeline.
> 
> In order to support that, we need drm bridges to fully take part in the
> atomic state validation process, which requires adding a
> drm_bridge_state and a new drm_bridge_funcs.atomic_check() hook.
> Once those basic building blocks are in place, we can add new hooks to
> allow bus format negotiation (those are called just before
> ->atomic_check()). The bus format selection is done at runtime by  
> testing all possible combinations across the whole bridge chain until
> one is reported to work.
> 
> No fundamental changes in this v10, just collected R-bs, addressed
> Philipp's comments and moved the changelog back to the visible part
> of the commit message.
> 
> I plan to apply patches 1 to 7 soon, so if there's anything you don't
> like in there, please say it now. Still waiting for review on the LVDS
> bridge and panel stuff.
> 
> This patch series is also available here [1].
> 
> Thanks,
> 
> Boris
> 
> [1]https://github.com/bbrezillon/linux-0day/commits/drm-bridge-busfmt-v10
> 
> Boris Brezillon (12):
>   drm/bridge: Add a drm_bridge_state object
>   drm/rcar-du: Plug atomic state hooks to the default implementation
>   drm/bridge: analogix: Plug atomic state hooks to the default
>     implementation
>   drm/bridge: Patch atomic hooks to take a drm_bridge_state
>   drm/bridge: Add an ->atomic_check() hook
>   drm/bridge: Add the necessary bits to support bus format negotiation
>   drm/imx: pd: Use bus format/flags provided by the bridge when
>     available

Patches 1 to 7 applied.

>   drm/bridge: lvds-codec: Implement basic bus format negotiation
>   dt-bindings: display: bridge: lvds-codec: Add new bus-width prop
>   drm/bridge: panel: Propage bus format/flags

Laurent, when you find some time, could you have a look at patches 8-10?

>   drm/panel: simple: Fix the lt089ac29000 bus_format

Sam, I'll let you apply that one since dim complained that it was
missing a R-b (you only gave your A-b).

>   ARM: dts: imx: imx51-zii-rdu1: Fix the display pipeline definition
> 
>  .../bindings/display/bridge/lvds-codec.yaml   |   8 +
>  arch/arm/boot/dts/imx51-zii-rdu1.dts          |  24 +-
>  .../drm/bridge/analogix/analogix_dp_core.c    |  44 +-
>  drivers/gpu/drm/bridge/lvds-codec.c           |  64 ++-
>  drivers/gpu/drm/bridge/panel.c                |   4 +
>  drivers/gpu/drm/drm_atomic.c                  | 116 +++++
>  drivers/gpu/drm/drm_atomic_helper.c           |  73 ++-
>  drivers/gpu/drm/drm_atomic_state_helper.c     | 103 +++++
>  drivers/gpu/drm/drm_bridge.c                  | 437 +++++++++++++++++-
>  drivers/gpu/drm/imx/parallel-display.c        | 177 ++++++-
>  drivers/gpu/drm/panel/panel-simple.c          |   2 +-
>  drivers/gpu/drm/rcar-du/rcar_lvds.c           |  11 +-
>  include/drm/drm_atomic.h                      |  76 +++
>  include/drm/drm_atomic_helper.h               |   8 +
>  include/drm/drm_atomic_state_helper.h         |  13 +
>  include/drm/drm_bridge.h                      | 179 ++++++-
>  16 files changed, 1258 insertions(+), 81 deletions(-)
>
Sam Ravnborg Jan. 31, 2020, 4:51 p.m. UTC | #2
Hi Boris.

> 
> >   drm/panel: simple: Fix the lt089ac29000 bus_format
> 
> Sam, I'll let you apply that one since dim complained that it was
> missing a R-b (you only gave your A-b).

Applied to drm-misc-next.

	Sam
Daniel Vetter Jan. 31, 2020, 6:08 p.m. UTC | #3
On Fri, Jan 31, 2020 at 04:42:44PM +0100, Boris Brezillon wrote:
> On Tue, 28 Jan 2020 14:55:02 +0100
> Boris Brezillon <boris.brezillon@collabora.com> wrote:
> 
> > Hello,
> > 
> > This patch series aims at adding support for runtime bus-format
> > negotiation between all elements of the
> > 'encoder -> bridges -> connector/display' section of the pipeline.
> > 
> > In order to support that, we need drm bridges to fully take part in the
> > atomic state validation process, which requires adding a
> > drm_bridge_state and a new drm_bridge_funcs.atomic_check() hook.
> > Once those basic building blocks are in place, we can add new hooks to
> > allow bus format negotiation (those are called just before
> > ->atomic_check()). The bus format selection is done at runtime by  
> > testing all possible combinations across the whole bridge chain until
> > one is reported to work.
> > 
> > No fundamental changes in this v10, just collected R-bs, addressed
> > Philipp's comments and moved the changelog back to the visible part
> > of the commit message.
> > 
> > I plan to apply patches 1 to 7 soon, so if there's anything you don't
> > like in there, please say it now. Still waiting for review on the LVDS
> > bridge and panel stuff.
> > 
> > This patch series is also available here [1].
> > 
> > Thanks,
> > 
> > Boris
> > 
> > [1]https://github.com/bbrezillon/linux-0day/commits/drm-bridge-busfmt-v10
> > 
> > Boris Brezillon (12):
> >   drm/bridge: Add a drm_bridge_state object
> >   drm/rcar-du: Plug atomic state hooks to the default implementation
> >   drm/bridge: analogix: Plug atomic state hooks to the default
> >     implementation
> >   drm/bridge: Patch atomic hooks to take a drm_bridge_state
> >   drm/bridge: Add an ->atomic_check() hook
> >   drm/bridge: Add the necessary bits to support bus format negotiation
> >   drm/imx: pd: Use bus format/flags provided by the bridge when
> >     available
> 
> Patches 1 to 7 applied.
> 
> >   drm/bridge: lvds-codec: Implement basic bus format negotiation
> >   dt-bindings: display: bridge: lvds-codec: Add new bus-width prop
> >   drm/bridge: panel: Propage bus format/flags
> 
> Laurent, when you find some time, could you have a look at patches 8-10?
> 
> >   drm/panel: simple: Fix the lt089ac29000 bus_format
> 
> Sam, I'll let you apply that one since dim complained that it was
> missing a R-b (you only gave your A-b).

A-b should be enough ... some typo in the A-b tag maybe?
-Daniel

> 
> >   ARM: dts: imx: imx51-zii-rdu1: Fix the display pipeline definition
> > 
> >  .../bindings/display/bridge/lvds-codec.yaml   |   8 +
> >  arch/arm/boot/dts/imx51-zii-rdu1.dts          |  24 +-
> >  .../drm/bridge/analogix/analogix_dp_core.c    |  44 +-
> >  drivers/gpu/drm/bridge/lvds-codec.c           |  64 ++-
> >  drivers/gpu/drm/bridge/panel.c                |   4 +
> >  drivers/gpu/drm/drm_atomic.c                  | 116 +++++
> >  drivers/gpu/drm/drm_atomic_helper.c           |  73 ++-
> >  drivers/gpu/drm/drm_atomic_state_helper.c     | 103 +++++
> >  drivers/gpu/drm/drm_bridge.c                  | 437 +++++++++++++++++-
> >  drivers/gpu/drm/imx/parallel-display.c        | 177 ++++++-
> >  drivers/gpu/drm/panel/panel-simple.c          |   2 +-
> >  drivers/gpu/drm/rcar-du/rcar_lvds.c           |  11 +-
> >  include/drm/drm_atomic.h                      |  76 +++
> >  include/drm/drm_atomic_helper.h               |   8 +
> >  include/drm/drm_atomic_state_helper.h         |  13 +
> >  include/drm/drm_bridge.h                      | 179 ++++++-
> >  16 files changed, 1258 insertions(+), 81 deletions(-)
> > 
>