mbox series

[00/11] drm/meson: Add G12A Support

Message ID 20190325141824.21259-1-narmstrong@baylibre.com (mailing list archive)
Headers show
Series drm/meson: Add G12A Support | expand

Message

Neil Armstrong March 25, 2019, 2:18 p.m. UTC
The Amlogic G12A SoC offers very close Video Display
functionnalities with it's older GXBB, GXL & GXM predecessors.

The main differences are :
- G12A Support now 3 "real" OSD planes with a new Blender module
- Instead of having a single Scaler for OSD1, G12A has two scaler
  that can be applied to 2 out of the 3 OSD planes or on the outputs
  of the blender module.
- The HDMI PHY now support RX-SENSE, Dynamic HDR and it's registers are
  now memory mapped instead of using an internal bus.
- The VPU now support a DSI interface to connect a display, using
  the Synopsys DSI controller and a custom PHY

The complex Blender routing, HDMI RX-SENSE, Dynamic HDR and DSI support
are not handled in this patchset.

This patchset implements on-par support with the currently support
GXBB, GXL and GXM SoCs. There is no support delta with this patchset.

patch 10 & 11 implements the bindings found at [1].

[1] https://lkml.kernel.org/r/20190313141030.5958-1-narmstrong@baylibre.com

Neil Armstrong (11):
  drm/meson: Switch PLL to 5.94GHz base for 297Mhz pixel clock
  drm/meson: Add registers for G12A SoC
  drm/meson: Add G12A Support for VPP setup
  drm/meson: Add G12A Support for VIU setup
  drm/meson: Add G12A support for OSD1 Plane
  drm/meson: Add G12A Support for the Overlay video plane
  drm/meson: Add G12A support for plane handling in CRTC driver
  drm/meson: Add G12A support for CVBS Encoer
  drm/meson: Add G12A Video Clock setup
  drm/meson: Add G12A compatible
  drm/meson: Add G12A support for the DW-HDMI Glue

 drivers/gpu/drm/meson/meson_crtc.c      | 269 +++++++++++++++++++-----
 drivers/gpu/drm/meson/meson_drv.c       |   1 +
 drivers/gpu/drm/meson/meson_drv.h       |   4 +
 drivers/gpu/drm/meson/meson_dw_hdmi.c   | 163 +++++++++++---
 drivers/gpu/drm/meson/meson_dw_hdmi.h   |  32 ++-
 drivers/gpu/drm/meson/meson_overlay.c   |  10 +-
 drivers/gpu/drm/meson/meson_plane.c     |  15 +-
 drivers/gpu/drm/meson/meson_registers.h | 247 ++++++++++++++++++++++
 drivers/gpu/drm/meson/meson_vclk.c      | 123 +++++++++--
 drivers/gpu/drm/meson/meson_venc.c      |  11 +-
 drivers/gpu/drm/meson/meson_venc_cvbs.c |  25 ++-
 drivers/gpu/drm/meson/meson_viu.c       |  72 ++++++-
 drivers/gpu/drm/meson/meson_vpp.c       |  51 +++--
 13 files changed, 880 insertions(+), 143 deletions(-)

Comments

Jerome Brunet April 9, 2019, 8:42 a.m. UTC | #1
On Mon, 2019-03-25 at 15:18 +0100, Neil Armstrong wrote:
> The Amlogic G12A SoC offers very close Video Display
> functionnalities with it's older GXBB, GXL & GXM predecessors.
> 
> The main differences are :
> - G12A Support now 3 "real" OSD planes with a new Blender module
> - Instead of having a single Scaler for OSD1, G12A has two scaler
>   that can be applied to 2 out of the 3 OSD planes or on the outputs
>   of the blender module.
> - The HDMI PHY now support RX-SENSE, Dynamic HDR and it's registers are
>   now memory mapped instead of using an internal bus.
> - The VPU now support a DSI interface to connect a display, using
>   the Synopsys DSI controller and a custom PHY
> 
> The complex Blender routing, HDMI RX-SENSE, Dynamic HDR and DSI support
> are not handled in this patchset.
> 
> This patchset implements on-par support with the currently support
> GXBB, GXL and GXM SoCs. There is no support delta with this patchset.
> 
> patch 10 & 11 implements the bindings found at [1].
> 
> [1] https://lkml.kernel.org/r/20190313141030.5958-1-narmstrong@baylibre.com
> 
> Neil Armstrong (11):
>   drm/meson: Switch PLL to 5.94GHz base for 297Mhz pixel clock
>   drm/meson: Add registers for G12A SoC
>   drm/meson: Add G12A Support for VPP setup
>   drm/meson: Add G12A Support for VIU setup
>   drm/meson: Add G12A support for OSD1 Plane
>   drm/meson: Add G12A Support for the Overlay video plane
>   drm/meson: Add G12A support for plane handling in CRTC driver
>   drm/meson: Add G12A support for CVBS Encoer
>   drm/meson: Add G12A Video Clock setup
>   drm/meson: Add G12A compatible
>   drm/meson: Add G12A support for the DW-HDMI Glue
> 
>  drivers/gpu/drm/meson/meson_crtc.c      | 269 +++++++++++++++++++-----
>  drivers/gpu/drm/meson/meson_drv.c       |   1 +
>  drivers/gpu/drm/meson/meson_drv.h       |   4 +
>  drivers/gpu/drm/meson/meson_dw_hdmi.c   | 163 +++++++++++---
>  drivers/gpu/drm/meson/meson_dw_hdmi.h   |  32 ++-
>  drivers/gpu/drm/meson/meson_overlay.c   |  10 +-
>  drivers/gpu/drm/meson/meson_plane.c     |  15 +-
>  drivers/gpu/drm/meson/meson_registers.h | 247 ++++++++++++++++++++++
>  drivers/gpu/drm/meson/meson_vclk.c      | 123 +++++++++--
>  drivers/gpu/drm/meson/meson_venc.c      |  11 +-
>  drivers/gpu/drm/meson/meson_venc_cvbs.c |  25 ++-
>  drivers/gpu/drm/meson/meson_viu.c       |  72 ++++++-
>  drivers/gpu/drm/meson/meson_vpp.c       |  51 +++--
>  13 files changed, 880 insertions(+), 143 deletions(-)
> 

on the u200 and sei510
Tested-by: Jerome Brunet <jbrunet@baylibre.com>

I can't pretend to have a deep understanding of this subsystem, but as far as
I can tell, there is nothing crazy in there. With the comments around the use
of constants and defines fixed, you can add

Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>

As a possible future enhancement, it would be nice if you could trim the use
of *_is_compatible() functions. I think it would make the code easier to
follow and review.
Neil Armstrong April 9, 2019, 8:51 a.m. UTC | #2
Hi,

On 09/04/2019 10:42, Jerome Brunet wrote:
> On Mon, 2019-03-25 at 15:18 +0100, Neil Armstrong wrote:
>> The Amlogic G12A SoC offers very close Video Display
>> functionnalities with it's older GXBB, GXL & GXM predecessors.
>>
>> The main differences are :
>> - G12A Support now 3 "real" OSD planes with a new Blender module
>> - Instead of having a single Scaler for OSD1, G12A has two scaler
>>   that can be applied to 2 out of the 3 OSD planes or on the outputs
>>   of the blender module.
>> - The HDMI PHY now support RX-SENSE, Dynamic HDR and it's registers are
>>   now memory mapped instead of using an internal bus.
>> - The VPU now support a DSI interface to connect a display, using
>>   the Synopsys DSI controller and a custom PHY
>>
>> The complex Blender routing, HDMI RX-SENSE, Dynamic HDR and DSI support
>> are not handled in this patchset.
>>
>> This patchset implements on-par support with the currently support
>> GXBB, GXL and GXM SoCs. There is no support delta with this patchset.
>>
>> patch 10 & 11 implements the bindings found at [1].
>>
>> [1] https://lkml.kernel.org/r/20190313141030.5958-1-narmstrong@baylibre.com
>>
>> Neil Armstrong (11):
>>   drm/meson: Switch PLL to 5.94GHz base for 297Mhz pixel clock
>>   drm/meson: Add registers for G12A SoC
>>   drm/meson: Add G12A Support for VPP setup
>>   drm/meson: Add G12A Support for VIU setup
>>   drm/meson: Add G12A support for OSD1 Plane
>>   drm/meson: Add G12A Support for the Overlay video plane
>>   drm/meson: Add G12A support for plane handling in CRTC driver
>>   drm/meson: Add G12A support for CVBS Encoer
>>   drm/meson: Add G12A Video Clock setup
>>   drm/meson: Add G12A compatible
>>   drm/meson: Add G12A support for the DW-HDMI Glue
>>
>>  drivers/gpu/drm/meson/meson_crtc.c      | 269 +++++++++++++++++++-----
>>  drivers/gpu/drm/meson/meson_drv.c       |   1 +
>>  drivers/gpu/drm/meson/meson_drv.h       |   4 +
>>  drivers/gpu/drm/meson/meson_dw_hdmi.c   | 163 +++++++++++---
>>  drivers/gpu/drm/meson/meson_dw_hdmi.h   |  32 ++-
>>  drivers/gpu/drm/meson/meson_overlay.c   |  10 +-
>>  drivers/gpu/drm/meson/meson_plane.c     |  15 +-
>>  drivers/gpu/drm/meson/meson_registers.h | 247 ++++++++++++++++++++++
>>  drivers/gpu/drm/meson/meson_vclk.c      | 123 +++++++++--
>>  drivers/gpu/drm/meson/meson_venc.c      |  11 +-
>>  drivers/gpu/drm/meson/meson_venc_cvbs.c |  25 ++-
>>  drivers/gpu/drm/meson/meson_viu.c       |  72 ++++++-
>>  drivers/gpu/drm/meson/meson_vpp.c       |  51 +++--
>>  13 files changed, 880 insertions(+), 143 deletions(-)
>>
> 
> on the u200 and sei510
> Tested-by: Jerome Brunet <jbrunet@baylibre.com>
> 
> I can't pretend to have a deep understanding of this subsystem, but as far as
> I can tell, there is nothing crazy in there. With the comments around the use
> of constants and defines fixed, you can add
> 
> Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
> 
> As a possible future enhancement, it would be nice if you could trim the use
> of *_is_compatible() functions. I think it would make the code easier to
> follow and review.
> 

Thanks for the overall review,

I will do a complete fixup of the constants and defines in a follow-up patchset,
since the already-merged code also needs a good cleanup.

I'll do a more complete refactoring to get rid of the _is_compatible() stuff
in a second time, it needs much more work to handle correctly the 4 SoC families.

Neil