mbox series

[v5,00/14] add support MDP3 on MT8195 platform

Message ID 20230912075805.11432-1-moudy.ho@mediatek.com
Headers show
Series add support MDP3 on MT8195 platform | expand

Message

Moudy Ho Sept. 12, 2023, 7:57 a.m. UTC
Changes since v4:
- Rebase on v6.6-rc1
- Remove any unnecessary DTS settings.
- Adjust the usage of MOD and clock in blending components.

Changes since v3:
- Depend on :
  [1] https://patchwork.kernel.org/project/linux-media/list/?series=719841
- Suggested by Krzysztof, integrating all newly added bindings for
  the mt8195 MDP3 into the file "mediatek,mt8195-mdp3.yaml".
- Revise MDP3 nodes with generic names.

Changes since v2:
- Depend on :
  [1] MMSYS/MUTEX: https://patchwork.kernel.org/project/linux-mediatek/list/?series=711592
  [2] MDP3: https://patchwork.kernel.org/project/linux-mediatek/list/?series=711618
- Suggested by Rob to revise MDP3 bindings to pass dtbs check
- Add parallel paths feature.
- Add blended components settings.

Changes since v1:
- Depend on :
  [1] MDP3 : https://patchwork.kernel.org/project/linux-mediatek/list/?series=698872
  [2] MMSYS/MUTEX: https://patchwork.kernel.org/project/linux-mediatek/list/?series=684959
- Fix compilation failure due to use of undeclared identifier in file "mtk-mdp3-cmdq.c"

Hello,

This patch is used to add support for MDP3 on the MT8195 platform that
contains more picture quality components, and can arrange more pipelines
through two sets of MMSYS and MUTEX respectively.

Moudy Ho (14):
  arm64: dts: mediatek: mt8183: correct MDP3 DMA-related nodes
  arm64: dts: mediatek: mt8195: add MDP3 nodes
  media: platform: mtk-mdp3: add support second sets of MMSYS
  media: platform: mtk-mdp3: add support second sets of MUTEX
  media: platform: mtk-mdp3: introduce more pipelines from MT8195
  media: platform: mtk-mdp3: introduce more MDP3 components
  media: platform: mtk-mdp3: add checks for dummy components
  media: platform: mtk-mdp3: avoid multiple driver registrations
  media: platform: mtk-mdp3: extend GCE event waiting in RDMA and WROT
  media: platform: mtk-mdp3: add support for blending multiple
    components
  media: platform: mtk-mdp3: add mt8195 platform configuration
  media: platform: mtk-mdp3: add mt8195 shared memory configurations
  media: platform: mtk-mdp3: add mt8195 MDP3 component settings
  media: platform: mtk-mdp3: add support for parallel pipe to improve
    FPS

 arch/arm64/boot/dts/mediatek/mt8183.dtsi      |   6 +-
 arch/arm64/boot/dts/mediatek/mt8195.dtsi      | 378 ++++++++
 .../platform/mediatek/mdp3/mdp_cfg_data.c     | 729 ++++++++++++++-
 .../platform/mediatek/mdp3/mdp_reg_aal.h      |  25 +
 .../platform/mediatek/mdp3/mdp_reg_color.h    |  31 +
 .../media/platform/mediatek/mdp3/mdp_reg_fg.h |  23 +
 .../platform/mediatek/mdp3/mdp_reg_hdr.h      |  31 +
 .../platform/mediatek/mdp3/mdp_reg_merge.h    |  25 +
 .../platform/mediatek/mdp3/mdp_reg_ovl.h      |  25 +
 .../platform/mediatek/mdp3/mdp_reg_pad.h      |  21 +
 .../platform/mediatek/mdp3/mdp_reg_rdma.h     |  24 +
 .../platform/mediatek/mdp3/mdp_reg_rsz.h      |   2 +
 .../platform/mediatek/mdp3/mdp_reg_tdshp.h    |  34 +
 .../platform/mediatek/mdp3/mdp_reg_wrot.h     |   8 +
 .../platform/mediatek/mdp3/mdp_sm_mt8195.h    | 283 ++++++
 .../platform/mediatek/mdp3/mtk-img-ipi.h      |   4 +
 .../platform/mediatek/mdp3/mtk-mdp3-cfg.h     |   2 +
 .../platform/mediatek/mdp3/mtk-mdp3-cmdq.c    | 447 +++++++--
 .../platform/mediatek/mdp3/mtk-mdp3-cmdq.h    |   1 +
 .../platform/mediatek/mdp3/mtk-mdp3-comp.c    | 860 +++++++++++++++++-
 .../platform/mediatek/mdp3/mtk-mdp3-comp.h    |  93 +-
 .../platform/mediatek/mdp3/mtk-mdp3-core.c    | 103 ++-
 .../platform/mediatek/mdp3/mtk-mdp3-core.h    |  33 +-
 .../platform/mediatek/mdp3/mtk-mdp3-m2m.c     |  15 +
 .../platform/mediatek/mdp3/mtk-mdp3-regs.c    |  18 +
 .../platform/mediatek/mdp3/mtk-mdp3-regs.h    |   1 +
 .../platform/mediatek/mdp3/mtk-mdp3-vpu.c     |   3 +-
 27 files changed, 3051 insertions(+), 174 deletions(-)
 create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_aal.h
 create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_color.h
 create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_fg.h
 create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_hdr.h
 create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_merge.h
 create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_ovl.h
 create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_pad.h
 create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_tdshp.h
 create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_sm_mt8195.h

Comments

Hans Verkuil Sept. 15, 2023, 10:27 a.m. UTC | #1
Hi Moudy,

On 12/09/2023 09:57, Moudy Ho wrote:
> Changes since v4:
> - Rebase on v6.6-rc1
> - Remove any unnecessary DTS settings.
> - Adjust the usage of MOD and clock in blending components.
> 
> Changes since v3:
> - Depend on :
>   [1] https://patchwork.kernel.org/project/linux-media/list/?series=719841
> - Suggested by Krzysztof, integrating all newly added bindings for
>   the mt8195 MDP3 into the file "mediatek,mt8195-mdp3.yaml".
> - Revise MDP3 nodes with generic names.
> 
> Changes since v2:
> - Depend on :
>   [1] MMSYS/MUTEX: https://patchwork.kernel.org/project/linux-mediatek/list/?series=711592
>   [2] MDP3: https://patchwork.kernel.org/project/linux-mediatek/list/?series=711618
> - Suggested by Rob to revise MDP3 bindings to pass dtbs check
> - Add parallel paths feature.
> - Add blended components settings.
> 
> Changes since v1:
> - Depend on :
>   [1] MDP3 : https://patchwork.kernel.org/project/linux-mediatek/list/?series=698872
>   [2] MMSYS/MUTEX: https://patchwork.kernel.org/project/linux-mediatek/list/?series=684959
> - Fix compilation failure due to use of undeclared identifier in file "mtk-mdp3-cmdq.c"
> 
> Hello,
> 
> This patch is used to add support for MDP3 on the MT8195 platform that
> contains more picture quality components, and can arrange more pipelines
> through two sets of MMSYS and MUTEX respectively.

I ran this series through our build system and I got the following compile warning:

drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c: In function 'mdp_path_config.isra':
drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:449:51: warning: 'ctx' may be used uninitialized [-Wmaybe-uninitialized]
  449 |                         out = CFG_COMP(MT8195, ctx->param, outputs[0]);
      |                                                ~~~^~~~~~~
drivers/media/platform/mediatek/mdp3/mtk-img-ipi.h:137:25: note: in definition of macro 'CFG_COMP'
  137 |         (IS_ERR_OR_NULL(comp) ? 0 : _CFG_COMP(plat, comp, mem))
      |                         ^~~~
drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:402:30: note: 'ctx' was declared here
  402 |         struct mdp_comp_ctx *ctx;
      |                              ^~~

And also a few smatch warnings/errors:

drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c:871 wait_wrot_event() warn: variable dereferenced before check 'mdp_cfg' (see line 864)
drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c:1024 reset_luma_hist() warn: variable dereferenced before check 'mdp_cfg' (see line 1015)
drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:447 mdp_path_config() error: potentially dereferencing uninitialized 'ctx'.
drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:449 mdp_path_config() error: potentially dereferencing uninitialized 'ctx'.

You can run the same tests yourself, see this announcement:

https://lore.kernel.org/linux-media/18989016-6392-a77b-6cf7-1223c9161def@xs4all.nl/

Regards,

	Hans

> 
> Moudy Ho (14):
>   arm64: dts: mediatek: mt8183: correct MDP3 DMA-related nodes
>   arm64: dts: mediatek: mt8195: add MDP3 nodes
>   media: platform: mtk-mdp3: add support second sets of MMSYS
>   media: platform: mtk-mdp3: add support second sets of MUTEX
>   media: platform: mtk-mdp3: introduce more pipelines from MT8195
>   media: platform: mtk-mdp3: introduce more MDP3 components
>   media: platform: mtk-mdp3: add checks for dummy components
>   media: platform: mtk-mdp3: avoid multiple driver registrations
>   media: platform: mtk-mdp3: extend GCE event waiting in RDMA and WROT
>   media: platform: mtk-mdp3: add support for blending multiple
>     components
>   media: platform: mtk-mdp3: add mt8195 platform configuration
>   media: platform: mtk-mdp3: add mt8195 shared memory configurations
>   media: platform: mtk-mdp3: add mt8195 MDP3 component settings
>   media: platform: mtk-mdp3: add support for parallel pipe to improve
>     FPS
> 
>  arch/arm64/boot/dts/mediatek/mt8183.dtsi      |   6 +-
>  arch/arm64/boot/dts/mediatek/mt8195.dtsi      | 378 ++++++++
>  .../platform/mediatek/mdp3/mdp_cfg_data.c     | 729 ++++++++++++++-
>  .../platform/mediatek/mdp3/mdp_reg_aal.h      |  25 +
>  .../platform/mediatek/mdp3/mdp_reg_color.h    |  31 +
>  .../media/platform/mediatek/mdp3/mdp_reg_fg.h |  23 +
>  .../platform/mediatek/mdp3/mdp_reg_hdr.h      |  31 +
>  .../platform/mediatek/mdp3/mdp_reg_merge.h    |  25 +
>  .../platform/mediatek/mdp3/mdp_reg_ovl.h      |  25 +
>  .../platform/mediatek/mdp3/mdp_reg_pad.h      |  21 +
>  .../platform/mediatek/mdp3/mdp_reg_rdma.h     |  24 +
>  .../platform/mediatek/mdp3/mdp_reg_rsz.h      |   2 +
>  .../platform/mediatek/mdp3/mdp_reg_tdshp.h    |  34 +
>  .../platform/mediatek/mdp3/mdp_reg_wrot.h     |   8 +
>  .../platform/mediatek/mdp3/mdp_sm_mt8195.h    | 283 ++++++
>  .../platform/mediatek/mdp3/mtk-img-ipi.h      |   4 +
>  .../platform/mediatek/mdp3/mtk-mdp3-cfg.h     |   2 +
>  .../platform/mediatek/mdp3/mtk-mdp3-cmdq.c    | 447 +++++++--
>  .../platform/mediatek/mdp3/mtk-mdp3-cmdq.h    |   1 +
>  .../platform/mediatek/mdp3/mtk-mdp3-comp.c    | 860 +++++++++++++++++-
>  .../platform/mediatek/mdp3/mtk-mdp3-comp.h    |  93 +-
>  .../platform/mediatek/mdp3/mtk-mdp3-core.c    | 103 ++-
>  .../platform/mediatek/mdp3/mtk-mdp3-core.h    |  33 +-
>  .../platform/mediatek/mdp3/mtk-mdp3-m2m.c     |  15 +
>  .../platform/mediatek/mdp3/mtk-mdp3-regs.c    |  18 +
>  .../platform/mediatek/mdp3/mtk-mdp3-regs.h    |   1 +
>  .../platform/mediatek/mdp3/mtk-mdp3-vpu.c     |   3 +-
>  27 files changed, 3051 insertions(+), 174 deletions(-)
>  create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_aal.h
>  create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_color.h
>  create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_fg.h
>  create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_hdr.h
>  create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_merge.h
>  create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_ovl.h
>  create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_pad.h
>  create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_reg_tdshp.h
>  create mode 100644 drivers/media/platform/mediatek/mdp3/mdp_sm_mt8195.h
>
Moudy Ho Sept. 19, 2023, 6:43 a.m. UTC | #2
On Fri, 2023-09-15 at 12:27 +0200, Hans Verkuil wrote:
>  	 
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
>  Hi Moudy,
> 
> On 12/09/2023 09:57, Moudy Ho wrote:
> > Changes since v4:
> > - Rebase on v6.6-rc1
> > - Remove any unnecessary DTS settings.
> > - Adjust the usage of MOD and clock in blending components.
> > 
> > Changes since v3:
> > - Depend on :
> >   [1] 
> https://patchwork.kernel.org/project/linux-media/list/?series=719841
> > - Suggested by Krzysztof, integrating all newly added bindings for
> >   the mt8195 MDP3 into the file "mediatek,mt8195-mdp3.yaml".
> > - Revise MDP3 nodes with generic names.
> > 
> > Changes since v2:
> > - Depend on :
> >   [1] MMSYS/MUTEX: 
> https://patchwork.kernel.org/project/linux-mediatek/list/?series=711592
> >   [2] MDP3: 
> https://patchwork.kernel.org/project/linux-mediatek/list/?series=711618
> > - Suggested by Rob to revise MDP3 bindings to pass dtbs check
> > - Add parallel paths feature.
> > - Add blended components settings.
> > 
> > Changes since v1:
> > - Depend on :
> >   [1] MDP3 : 
> https://patchwork.kernel.org/project/linux-mediatek/list/?series=698872
> >   [2] MMSYS/MUTEX: 
> https://patchwork.kernel.org/project/linux-mediatek/list/?series=684959
> > - Fix compilation failure due to use of undeclared identifier in
> file "mtk-mdp3-cmdq.c"
> > 
> > Hello,
> > 
> > This patch is used to add support for MDP3 on the MT8195 platform
> that
> > contains more picture quality components, and can arrange more
> pipelines
> > through two sets of MMSYS and MUTEX respectively.
> 
> I ran this series through our build system and I got the following
> compile warning:
> 
> drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c: In function
> 'mdp_path_config.isra':
> drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:449:51: warning:
> 'ctx' may be used uninitialized [-Wmaybe-uninitialized]
>   449 |                         out = CFG_COMP(MT8195, ctx->param,
> outputs[0]);
>       |                                                ~~~^~~~~~~
> drivers/media/platform/mediatek/mdp3/mtk-img-ipi.h:137:25: note: in
> definition of macro 'CFG_COMP'
>   137 |         (IS_ERR_OR_NULL(comp) ? 0 : _CFG_COMP(plat, comp,
> mem))
>       |                         ^~~~
> drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:402:30: note:
> 'ctx' was declared here
>   402 |         struct mdp_comp_ctx *ctx;
>       |                              ^~~
> 
> And also a few smatch warnings/errors:
> 
> drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c:871
> wait_wrot_event() warn: variable dereferenced before check 'mdp_cfg'
> (see line 864)
> drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c:1024
> reset_luma_hist() warn: variable dereferenced before check 'mdp_cfg'
> (see line 1015)
> drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:447
> mdp_path_config() error: potentially dereferencing uninitialized
> 'ctx'.
> drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:449
> mdp_path_config() error: potentially dereferencing uninitialized
> 'ctx'.
> 
> You can run the same tests yourself, see this announcement:
> 
> 
https://lore.kernel.org/linux-media/18989016-6392-a77b-6cf7-1223c9161def@xs4all.nl/
> 
> Regards,
> 
> Hans
> 

Hi Hans,

Thanks for the reminder. I will run the build script to test this
series and rectify any warnings.

Sincerely,
Moudy
> > 
> > Moudy Ho (14):
> >   arm64: dts: mediatek: mt8183: correct MDP3 DMA-related nodes
> >   arm64: dts: mediatek: mt8195: add MDP3 nodes
> >   media: platform: mtk-mdp3: add support second sets of MMSYS
> >   media: platform: mtk-mdp3: add support second sets of MUTEX
> >   media: platform: mtk-mdp3: introduce more pipelines from MT8195
> >   media: platform: mtk-mdp3: introduce more MDP3 components
> >   media: platform: mtk-mdp3: add checks for dummy components
> >   media: platform: mtk-mdp3: avoid multiple driver registrations
> >   media: platform: mtk-mdp3: extend GCE event waiting in RDMA and
> WROT
> >   media: platform: mtk-mdp3: add support for blending multiple
> >     components
> >   media: platform: mtk-mdp3: add mt8195 platform configuration
> >   media: platform: mtk-mdp3: add mt8195 shared memory
> configurations
> >   media: platform: mtk-mdp3: add mt8195 MDP3 component settings
> >   media: platform: mtk-mdp3: add support for parallel pipe to
> improve
> >     FPS
> > 
> >  arch/arm64/boot/dts/mediatek/mt8183.dtsi      |   6 +-
> >  arch/arm64/boot/dts/mediatek/mt8195.dtsi      | 378 ++++++++
> >  .../platform/mediatek/mdp3/mdp_cfg_data.c     | 729
> ++++++++++++++-
> >  .../platform/mediatek/mdp3/mdp_reg_aal.h      |  25 +
> >  .../platform/mediatek/mdp3/mdp_reg_color.h    |  31 +
> >  .../media/platform/mediatek/mdp3/mdp_reg_fg.h |  23 +
> >  .../platform/mediatek/mdp3/mdp_reg_hdr.h      |  31 +
> >  .../platform/mediatek/mdp3/mdp_reg_merge.h    |  25 +
> >  .../platform/mediatek/mdp3/mdp_reg_ovl.h      |  25 +
> >  .../platform/mediatek/mdp3/mdp_reg_pad.h      |  21 +
> >  .../platform/mediatek/mdp3/mdp_reg_rdma.h     |  24 +
> >  .../platform/mediatek/mdp3/mdp_reg_rsz.h      |   2 +
> >  .../platform/mediatek/mdp3/mdp_reg_tdshp.h    |  34 +
> >  .../platform/mediatek/mdp3/mdp_reg_wrot.h     |   8 +
> >  .../platform/mediatek/mdp3/mdp_sm_mt8195.h    | 283 ++++++
> >  .../platform/mediatek/mdp3/mtk-img-ipi.h      |   4 +
> >  .../platform/mediatek/mdp3/mtk-mdp3-cfg.h     |   2 +
> >  .../platform/mediatek/mdp3/mtk-mdp3-cmdq.c    | 447 +++++++--
> >  .../platform/mediatek/mdp3/mtk-mdp3-cmdq.h    |   1 +
> >  .../platform/mediatek/mdp3/mtk-mdp3-comp.c    | 860
> +++++++++++++++++-
> >  .../platform/mediatek/mdp3/mtk-mdp3-comp.h    |  93 +-
> >  .../platform/mediatek/mdp3/mtk-mdp3-core.c    | 103 ++-
> >  .../platform/mediatek/mdp3/mtk-mdp3-core.h    |  33 +-
> >  .../platform/mediatek/mdp3/mtk-mdp3-m2m.c     |  15 +
> >  .../platform/mediatek/mdp3/mtk-mdp3-regs.c    |  18 +
> >  .../platform/mediatek/mdp3/mtk-mdp3-regs.h    |   1 +
> >  .../platform/mediatek/mdp3/mtk-mdp3-vpu.c     |   3 +-
> >  27 files changed, 3051 insertions(+), 174 deletions(-)
> >  create mode 100644
> drivers/media/platform/mediatek/mdp3/mdp_reg_aal.h
> >  create mode 100644
> drivers/media/platform/mediatek/mdp3/mdp_reg_color.h
> >  create mode 100644
> drivers/media/platform/mediatek/mdp3/mdp_reg_fg.h
> >  create mode 100644
> drivers/media/platform/mediatek/mdp3/mdp_reg_hdr.h
> >  create mode 100644
> drivers/media/platform/mediatek/mdp3/mdp_reg_merge.h
> >  create mode 100644
> drivers/media/platform/mediatek/mdp3/mdp_reg_ovl.h
> >  create mode 100644
> drivers/media/platform/mediatek/mdp3/mdp_reg_pad.h
> >  create mode 100644
> drivers/media/platform/mediatek/mdp3/mdp_reg_tdshp.h
> >  create mode 100644
> drivers/media/platform/mediatek/mdp3/mdp_sm_mt8195.h
> > 
>