mbox series

[v2,RESEND,00/24] drm/exynos: add support for GSCALER planes on Exynos5433

Message ID 20190320130707.25161-1-a.hajda@samsung.com (mailing list archive)
Headers show
Series drm/exynos: add support for GSCALER planes on Exynos5433 | expand

Message

Andrzej Hajda March 20, 2019, 1:06 p.m. UTC
Hi Inki,

GSCALERs in Exynos SoCs support conversion between wide range of image formats,
plus scaling and rotation.
Driver already supports mem2mem mode - via ExynosDRM IPP framework.
This patchset adds support for mem to display mode - framebuffers can
be converted, scaled and send directly to Display Controller. From DRM
framework's point of view every GSCALER exposes drm_plane which can be connected
to display controller (display panel or TV).
The feature is not well documented so the development was quite difficult -
a process of trial and error, vendor code analysis, guessing from datasheets.
Hopefully most of the issues were solved. I have developed and tested it on
TM2 device with panel and TV paths.

The patchset contains three parts:
1. Preparatory patches - mostly cleanup and refactoring of drm_crtc and drm_plane
   related structures, to allow usage of planes which are not physically bound
   to crtcs (01-13).
2. Adding local path support to GSCALER and DECON (14-20).
3. Few fixes of bugs existing already in the code but discovered due to added
   local path support (21-23).

The patchset is based on exynos_drm_next plus my patchset adding zpos to DECON
and FIMD - 'drm/exynos: add support for dynamic zpos in DECON and FIMD' - it is
required to allow set z-pos position of GSCALER planes.
To simplify tests I have also created branch containing all required patches:
Repo: https://git.tizen.org/cgit/platform/kernel/linux-exynos
Branch: sandbox/ahajda/dev/exynos-drm-local-path

This is v2 version of the patchset. In this version I have moved code setting
cursor plane in crtc to separate patch together with code disabling fast cursor
updates - hardware does not support it. To keep bisectability DTS patches should
be applied before subsequent ones.

Regards
Andrzej


Andrzej Hajda (24):
  drm/exynos: remove exynos_drm_plane.h header
  drm/exynos: remove spare macro
  drm/exynos: drop exynos_drm_plane_config structure
  drm/exynos: add exynos_drm_crtc_init function
  drm/exynos/decon5433: embed exynos_drm_crtc directly into context
  drm/exynos/decon7: embed exynos_drm_crtc directly into context
  drm/exynos/fimd: embed exynos_drm_crtc directly into context
  drm/exynos/mixer: embed exynos_drm_crtc directly into context
  drm/exynos/vidi: embed exynos_drm_crtc directly into context
  drm/exynos: remove standalone exynos_drm_crtc leftovers
  drm/exynos/vidi: remove encoder_to_vidi helper
  drm/exynos: unify plane type assignment
  drm/exynos: set primary plane in exynos_drm_crtc_init
  drm/exynos: set cursor plane in exynos_drm_crtc_init
  drm/exynos: add plane update/disable callbacks for planes
  drm/exynos: add GSCALER plane capability
  drm/exynos/gscaler: fix id assignement
  arm64: dts: exynos: configure GSCALER related clocks
  arm64: dts: exynos: add DSD/GSD clocks to DECONs and GSCALERs
  drm/exynos/gscaler: add local path support
  drm/exynos/decon5433: add local path support
  drm/exynos/decon5433: wait for finish previous update
  drm/exynos/gscaler: change supported color format BGRX8888 to XBGR8888
  drm/exynos/gscaler: fix handling YVU420 pixel format

 .../dts/exynos/exynos5433-tm2-common.dtsi     |   6 +
 arch/arm64/boot/dts/exynos/exynos5433-tm2.dts |   6 +-
 arch/arm64/boot/dts/exynos/exynos5433.dtsi    |  25 +-
 drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 162 ++++++++-----
 drivers/gpu/drm/exynos/exynos7_drm_decon.c    |  66 +++--
 drivers/gpu/drm/exynos/exynos_drm_crtc.c      |  46 ++--
 drivers/gpu/drm/exynos/exynos_drm_crtc.h      |   7 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c       |   1 -
 drivers/gpu/drm/exynos/exynos_drm_drv.h       |  50 ++--
 drivers/gpu/drm/exynos/exynos_drm_fb.c        |  10 +-
 drivers/gpu/drm/exynos/exynos_drm_fimd.c      |  85 +++----
 drivers/gpu/drm/exynos/exynos_drm_gsc.c       | 229 ++++++++++++++----
 drivers/gpu/drm/exynos/exynos_drm_plane.c     |  84 ++++---
 drivers/gpu/drm/exynos/exynos_drm_plane.h     |  14 --
 drivers/gpu/drm/exynos/exynos_drm_vidi.c      |  48 ++--
 drivers/gpu/drm/exynos/exynos_mixer.c         |  95 +++-----
 drivers/gpu/drm/exynos/regs-decon5433.h       |   6 +
 drivers/gpu/drm/exynos/regs-gsc.h             |   6 +
 18 files changed, 538 insertions(+), 408 deletions(-)
 delete mode 100644 drivers/gpu/drm/exynos/exynos_drm_plane.h

Comments

Inki Dae March 25, 2019, 3:12 a.m. UTC | #1
Hi Andrzej,

Merge conflict. Could you rebase this patch series on top of exynos-drm-next?

Thanks,
Inki Dae

19. 3. 20. 오후 10:06에 Andrzej Hajda 이(가) 쓴 글:
> Hi Inki,
> 
> GSCALERs in Exynos SoCs support conversion between wide range of image formats,
> plus scaling and rotation.
> Driver already supports mem2mem mode - via ExynosDRM IPP framework.
> This patchset adds support for mem to display mode - framebuffers can
> be converted, scaled and send directly to Display Controller. From DRM
> framework's point of view every GSCALER exposes drm_plane which can be connected
> to display controller (display panel or TV).
> The feature is not well documented so the development was quite difficult -
> a process of trial and error, vendor code analysis, guessing from datasheets.
> Hopefully most of the issues were solved. I have developed and tested it on
> TM2 device with panel and TV paths.
> 
> The patchset contains three parts:
> 1. Preparatory patches - mostly cleanup and refactoring of drm_crtc and drm_plane
>    related structures, to allow usage of planes which are not physically bound
>    to crtcs (01-13).
> 2. Adding local path support to GSCALER and DECON (14-20).
> 3. Few fixes of bugs existing already in the code but discovered due to added
>    local path support (21-23).
> 
> The patchset is based on exynos_drm_next plus my patchset adding zpos to DECON
> and FIMD - 'drm/exynos: add support for dynamic zpos in DECON and FIMD' - it is
> required to allow set z-pos position of GSCALER planes.
> To simplify tests I have also created branch containing all required patches:
> Repo: https://git.tizen.org/cgit/platform/kernel/linux-exynos
> Branch: sandbox/ahajda/dev/exynos-drm-local-path
> 
> This is v2 version of the patchset. In this version I have moved code setting
> cursor plane in crtc to separate patch together with code disabling fast cursor
> updates - hardware does not support it. To keep bisectability DTS patches should
> be applied before subsequent ones.
> 
> Regards
> Andrzej
> 
> 
> Andrzej Hajda (24):
>   drm/exynos: remove exynos_drm_plane.h header
>   drm/exynos: remove spare macro
>   drm/exynos: drop exynos_drm_plane_config structure
>   drm/exynos: add exynos_drm_crtc_init function
>   drm/exynos/decon5433: embed exynos_drm_crtc directly into context
>   drm/exynos/decon7: embed exynos_drm_crtc directly into context
>   drm/exynos/fimd: embed exynos_drm_crtc directly into context
>   drm/exynos/mixer: embed exynos_drm_crtc directly into context
>   drm/exynos/vidi: embed exynos_drm_crtc directly into context
>   drm/exynos: remove standalone exynos_drm_crtc leftovers
>   drm/exynos/vidi: remove encoder_to_vidi helper
>   drm/exynos: unify plane type assignment
>   drm/exynos: set primary plane in exynos_drm_crtc_init
>   drm/exynos: set cursor plane in exynos_drm_crtc_init
>   drm/exynos: add plane update/disable callbacks for planes
>   drm/exynos: add GSCALER plane capability
>   drm/exynos/gscaler: fix id assignement
>   arm64: dts: exynos: configure GSCALER related clocks
>   arm64: dts: exynos: add DSD/GSD clocks to DECONs and GSCALERs
>   drm/exynos/gscaler: add local path support
>   drm/exynos/decon5433: add local path support
>   drm/exynos/decon5433: wait for finish previous update
>   drm/exynos/gscaler: change supported color format BGRX8888 to XBGR8888
>   drm/exynos/gscaler: fix handling YVU420 pixel format
> 
>  .../dts/exynos/exynos5433-tm2-common.dtsi     |   6 +
>  arch/arm64/boot/dts/exynos/exynos5433-tm2.dts |   6 +-
>  arch/arm64/boot/dts/exynos/exynos5433.dtsi    |  25 +-
>  drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 162 ++++++++-----
>  drivers/gpu/drm/exynos/exynos7_drm_decon.c    |  66 +++--
>  drivers/gpu/drm/exynos/exynos_drm_crtc.c      |  46 ++--
>  drivers/gpu/drm/exynos/exynos_drm_crtc.h      |   7 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.c       |   1 -
>  drivers/gpu/drm/exynos/exynos_drm_drv.h       |  50 ++--
>  drivers/gpu/drm/exynos/exynos_drm_fb.c        |  10 +-
>  drivers/gpu/drm/exynos/exynos_drm_fimd.c      |  85 +++----
>  drivers/gpu/drm/exynos/exynos_drm_gsc.c       | 229 ++++++++++++++----
>  drivers/gpu/drm/exynos/exynos_drm_plane.c     |  84 ++++---
>  drivers/gpu/drm/exynos/exynos_drm_plane.h     |  14 --
>  drivers/gpu/drm/exynos/exynos_drm_vidi.c      |  48 ++--
>  drivers/gpu/drm/exynos/exynos_mixer.c         |  95 +++-----
>  drivers/gpu/drm/exynos/regs-decon5433.h       |   6 +
>  drivers/gpu/drm/exynos/regs-gsc.h             |   6 +
>  18 files changed, 538 insertions(+), 408 deletions(-)
>  delete mode 100644 drivers/gpu/drm/exynos/exynos_drm_plane.h
>
Andrzej Hajda March 25, 2019, 7:21 a.m. UTC | #2
Hi Inki,

On 25.03.2019 04:12, Inki Dae wrote:
> Hi Andrzej,
>
> Merge conflict. Could you rebase this patch series on top of exynos-drm-next?


I have just sent rebased version.

Please be just aware that first two DTS patches has been already applied
to samsung-soc tree.


Regards

Andrzej