[PATCH v8 00/20] Add GCE support for MT8196

Jason-JH Lin posted 20 patches 1 month, 3 weeks ago
arch/arm64/boot/dts/mediatek/mt8196-gce.h     | 612 ++++++++++++++++++
drivers/gpu/drm/mediatek/mtk_ddp_comp.c       |  12 +-
drivers/mailbox/mtk-cmdq-mailbox.c            | 113 +++-
.../platform/mediatek/mdp3/mtk-mdp3-cmdq.c    |   6 +-
.../platform/mediatek/mdp3/mtk-mdp3-comp.h    |   6 +-
.../platform/mediatek/mdp3/mtk-mdp3-core.c    |   2 -
.../platform/mediatek/mdp3/mtk-mdp3-core.h    |   1 -
drivers/soc/mediatek/mtk-cmdq-helper.c        |  82 ++-
drivers/soc/mediatek/mtk-mmsys.c              |   8 +-
drivers/soc/mediatek/mtk-mutex.c              |   5 +-
include/linux/mailbox/mtk-cmdq-mailbox.h      |  19 +-
include/linux/soc/mediatek/mtk-cmdq.h         |  87 ++-
12 files changed, 879 insertions(+), 74 deletions(-)
create mode 100644 arch/arm64/boot/dts/mediatek/mt8196-gce.h
[PATCH v8 00/20] Add GCE support for MT8196
Posted by Jason-JH Lin 1 month, 3 weeks ago
From: Jason-jh Lin <jason-jh.lin@mediatek.corp-partner.google.com>

This patch series adds support for the MediaTek MT8196 SoC in the CMDQ
driver and related subsystems. The changes include adding compatible
names and iommus property, updating driver data to accommodate hardware
changes, and modifying the usage of CMDQ APIs to support non-subsys ID
hardware.

---
Change in v8:
1. Use function pointer to select the correct CMDQ APIs when checking
   subsys is support for the HW component.

Change in v7:
1. Rename cmdq_reg_shift_addr() and cmdq_reg_revert_addr() to 
   cmdq_convert_gce_addr() and cmdq_revert_gce_addr().
2. Change cmdq_vm_toggle to cmdq_vm_init().

Change in v6:
1. Move the removal patches to the end of series.
2. Fix build error for cmdq_pkt_jump_rel_temp patch.

Change in RESEND v5:
1. Separate the removal of cmdq_get_shift_pa() from [PATCH v5 03/19] to a
   single patch [PATCH RESEND v5 10/20].

Change in v5:
1. Rebase on tag: next-20250424 + patch [1].
2. Split adding driver data for MT8196 patch to 3 independent patch
   and add more detail commit message to each patch.
3. Refine passing shift_pa as the parameter in API to storing it into
   the cmdq_pkt.
4. Refine DMA address potential issue in cmdq mailbox driver.
5. Change the mminfra_offset related mbox API to passing it by cmdq_pkt.
6. Add new cmdq_pkt_write_pa() and cmdq_pkt_write_subsys() APIs to
   replace the cmdq_pkt_write().

[1] mailbox: mtk-cmdq: Refine GCE_GCTL_VALUE setting
- https://patchwork.kernel.org/project/linux-mediatek/patch/20250421035650.441383-1-jason-jh.lin@mediatek.com/

Change in v4:
1. Remove dt-binding header and add a gce header in dts folder.
2. Remove dot in sign-off name.
3. Change addr type from u32 to dma_addr_t for cmdq_reg_shift_addr() and
   cmdq_reg_revert_addr().

Change in v3:
1. Merge 2 dt-bindings pathes together and add more detail commit message.
2. Change type u32 to phys_addr_t for pa_base of struct cmdq_client_reg.
3. Remove cmdq_subsys_is_valid() and subsys_num in CMDQ driver.
4. Add CMDQ_SUBSYS_INVALID to check subsys instead of using
   cmdq_subsys_is_invalid().
5. Make use of CMDQ_THR_SPR0 define to the parameter of CMDQ APIs.
6. Rebase on the new MACRO in mtk-mdp3-comp.h.

Change in v2:
1. Remove the constant and fix warning in dt-bindings.
2. Remove the pa_base parameter of CMDQ APIs and related modification.
3. Move subsys checking to client drivers and use 2 alternative
   CMDQ APIs to achieve the same functionality.

---

Jason-JH Lin (20):
  arm64: dts: mediatek: Add GCE header for MT8196
  mailbox: mtk-cmdq: Refine DMA address handling for the command buffer
  mailbox: mtk-cmdq: Add cmdq private data to cmdq_pkt for generating
    instruction
  soc: mediatek: mtk-cmdq: Add cmdq_get_mbox_priv() in cmdq_pkt_create()
  soc: mediatek: mtk-cmdq: Add cmdq_pkt_jump_rel_temp() for removing
    shift_pa
  mailbox: mtk-cmdq: Add GCE hardware virtualization configuration
  mailbox: mtk-cmdq: Add mminfra_offset configuration for DRAM
    transaction
  mailbox: mtk-cmdq: Add driver data to support for MT8196
  soc: mediatek: mtk-cmdq: Add pa_base parsing for hardware without
    subsys ID support
  soc: mediatek: mtk-cmdq: Extend cmdq_pkt_write API for SoCs without
    subsys ID
  soc: mediatek: mtk-cmdq: Add mminfra_offset adjustment for DRAM
    addresses
  soc: mediatek: Use reg_write function pointer for subsys ID
    compatibility
  drm/mediatek:Use reg_write function pointer for subsys ID
    compatibility
  media: platform: mtk-mdp3: Refactor CMDQ writes for CMDQ API change
  media: platform: mtk-mdp3: Change cmdq_pkt_jump_rel() to
    cmdq_pkt_jump_rel_temp()
  soc: mediatek: mtk-cmdq: Remove shift_pa parameter from
    cmdq_pkt_jump()
  media: platform: mtk-mdp3: Use cmdq_pkt_jump_rel() without shift_pa
  soc: mediatek: mtk-cmdq: Remove cmdq_pkt_jump() and
    cmdq_pkt_jump_rel_temp()
  soc: mediatek: mtk-cmdq: Remove cmdq_pkt_write() and
    cmdq_pkt_write_mask()
  mailbox: mtk-cmdq: Remove unsued cmdq_get_shift_pa()

 arch/arm64/boot/dts/mediatek/mt8196-gce.h     | 612 ++++++++++++++++++
 drivers/gpu/drm/mediatek/mtk_ddp_comp.c       |  12 +-
 drivers/mailbox/mtk-cmdq-mailbox.c            | 113 +++-
 .../platform/mediatek/mdp3/mtk-mdp3-cmdq.c    |   6 +-
 .../platform/mediatek/mdp3/mtk-mdp3-comp.h    |   6 +-
 .../platform/mediatek/mdp3/mtk-mdp3-core.c    |   2 -
 .../platform/mediatek/mdp3/mtk-mdp3-core.h    |   1 -
 drivers/soc/mediatek/mtk-cmdq-helper.c        |  82 ++-
 drivers/soc/mediatek/mtk-mmsys.c              |   8 +-
 drivers/soc/mediatek/mtk-mutex.c              |   5 +-
 include/linux/mailbox/mtk-cmdq-mailbox.h      |  19 +-
 include/linux/soc/mediatek/mtk-cmdq.h         |  87 ++-
 12 files changed, 879 insertions(+), 74 deletions(-)
 create mode 100644 arch/arm64/boot/dts/mediatek/mt8196-gce.h

-- 
2.43.0
Re: [PATCH v8 00/20] Add GCE support for MT8196
Posted by AngeloGioacchino Del Regno 1 month, 3 weeks ago
Il 17/10/25 08:44, Jason-JH Lin ha scritto:
> From: Jason-jh Lin <jason-jh.lin@mediatek.corp-partner.google.com>
> 
> This patch series adds support for the MediaTek MT8196 SoC in the CMDQ
> driver and related subsystems. The changes include adding compatible
> names and iommus property, updating driver data to accommodate hardware
> changes, and modifying the usage of CMDQ APIs to support non-subsys ID
> hardware.
> 

OK - after applying some last small changes as I pointed out in each patch,
the code is ready IMO.

To ease merging, though, I'd like you to split this series in multiple series:
  1. Addition of new functions and support for MT8196
  2. Migration of drm-mediatek, mailbox, mdp3 to the new functions
  3. Removal of the temporary functions that were introduced only for migration

This gives everyone the opportunity of getting just the relevant parts for each
merge cycle, avoiding possible confusion on what to pick and what not to.

Keep in mind that soc/mediatek and mailbox are from two different maintainers,
and you may need to split this in more than 3 series.

I believe that we might at least get a mailbox immutable branch if we want to
do this in 3 kernel versions, otherwise it's going to be four, I think.

Cheers,
Angelo


> ---
> Change in v8:
> 1. Use function pointer to select the correct CMDQ APIs when checking
>     subsys is support for the HW component.
> 
> Change in v7:
> 1. Rename cmdq_reg_shift_addr() and cmdq_reg_revert_addr() to
>     cmdq_convert_gce_addr() and cmdq_revert_gce_addr().
> 2. Change cmdq_vm_toggle to cmdq_vm_init().
> 
> Change in v6:
> 1. Move the removal patches to the end of series.
> 2. Fix build error for cmdq_pkt_jump_rel_temp patch.
> 
> Change in RESEND v5:
> 1. Separate the removal of cmdq_get_shift_pa() from [PATCH v5 03/19] to a
>     single patch [PATCH RESEND v5 10/20].
> 
> Change in v5:
> 1. Rebase on tag: next-20250424 + patch [1].
> 2. Split adding driver data for MT8196 patch to 3 independent patch
>     and add more detail commit message to each patch.
> 3. Refine passing shift_pa as the parameter in API to storing it into
>     the cmdq_pkt.
> 4. Refine DMA address potential issue in cmdq mailbox driver.
> 5. Change the mminfra_offset related mbox API to passing it by cmdq_pkt.
> 6. Add new cmdq_pkt_write_pa() and cmdq_pkt_write_subsys() APIs to
>     replace the cmdq_pkt_write().
> 
> [1] mailbox: mtk-cmdq: Refine GCE_GCTL_VALUE setting
> - https://patchwork.kernel.org/project/linux-mediatek/patch/20250421035650.441383-1-jason-jh.lin@mediatek.com/
> 
> Change in v4:
> 1. Remove dt-binding header and add a gce header in dts folder.
> 2. Remove dot in sign-off name.
> 3. Change addr type from u32 to dma_addr_t for cmdq_reg_shift_addr() and
>     cmdq_reg_revert_addr().
> 
> Change in v3:
> 1. Merge 2 dt-bindings pathes together and add more detail commit message.
> 2. Change type u32 to phys_addr_t for pa_base of struct cmdq_client_reg.
> 3. Remove cmdq_subsys_is_valid() and subsys_num in CMDQ driver.
> 4. Add CMDQ_SUBSYS_INVALID to check subsys instead of using
>     cmdq_subsys_is_invalid().
> 5. Make use of CMDQ_THR_SPR0 define to the parameter of CMDQ APIs.
> 6. Rebase on the new MACRO in mtk-mdp3-comp.h.
> 
> Change in v2:
> 1. Remove the constant and fix warning in dt-bindings.
> 2. Remove the pa_base parameter of CMDQ APIs and related modification.
> 3. Move subsys checking to client drivers and use 2 alternative
>     CMDQ APIs to achieve the same functionality.
> 
> ---
> 
> Jason-JH Lin (20):

Series 1 start

>    arm64: dts: mediatek: Add GCE header for MT8196
>    mailbox: mtk-cmdq: Refine DMA address handling for the command buffer
>    mailbox: mtk-cmdq: Add cmdq private data to cmdq_pkt for generating
>      instruction
>    soc: mediatek: mtk-cmdq: Add cmdq_get_mbox_priv() in cmdq_pkt_create()
>    soc: mediatek: mtk-cmdq: Add cmdq_pkt_jump_rel_temp() for removing
>      shift_pa
>    mailbox: mtk-cmdq: Add GCE hardware virtualization configuration
>    mailbox: mtk-cmdq: Add mminfra_offset configuration for DRAM
>      transaction
>    mailbox: mtk-cmdq: Add driver data to support for MT8196
>    soc: mediatek: mtk-cmdq: Add pa_base parsing for hardware without
>      subsys ID support
>    soc: mediatek: mtk-cmdq: Extend cmdq_pkt_write API for SoCs without
>      subsys ID
>    soc: mediatek: mtk-cmdq: Add mminfra_offset adjustment for DRAM
>      addresses
>    soc: mediatek: Use reg_write function pointer for subsys ID
>      compatibility
>    drm/mediatek:Use reg_write function pointer for subsys ID
>      compatibility
>    media: platform: mtk-mdp3: Refactor CMDQ writes for CMDQ API change
>    media: platform: mtk-mdp3: Change cmdq_pkt_jump_rel() to
>      cmdq_pkt_jump_rel_temp()
>    soc: mediatek: mtk-cmdq: Remove shift_pa parameter from
>      cmdq_pkt_jump()
>    media: platform: mtk-mdp3: Use cmdq_pkt_jump_rel() without shift_pa
>    soc: mediatek: mtk-cmdq: Remove cmdq_pkt_jump() and
>      cmdq_pkt_jump_rel_temp()
>    soc: mediatek: mtk-cmdq: Remove cmdq_pkt_write() and
>      cmdq_pkt_write_mask()
>    mailbox: mtk-cmdq: Remove unsued cmdq_get_shift_pa()
> 
>   arch/arm64/boot/dts/mediatek/mt8196-gce.h     | 612 ++++++++++++++++++
>   drivers/gpu/drm/mediatek/mtk_ddp_comp.c       |  12 +-
>   drivers/mailbox/mtk-cmdq-mailbox.c            | 113 +++-
>   .../platform/mediatek/mdp3/mtk-mdp3-cmdq.c    |   6 +-
>   .../platform/mediatek/mdp3/mtk-mdp3-comp.h    |   6 +-
>   .../platform/mediatek/mdp3/mtk-mdp3-core.c    |   2 -
>   .../platform/mediatek/mdp3/mtk-mdp3-core.h    |   1 -
>   drivers/soc/mediatek/mtk-cmdq-helper.c        |  82 ++-
>   drivers/soc/mediatek/mtk-mmsys.c              |   8 +-
>   drivers/soc/mediatek/mtk-mutex.c              |   5 +-
>   include/linux/mailbox/mtk-cmdq-mailbox.h      |  19 +-
>   include/linux/soc/mediatek/mtk-cmdq.h         |  87 ++-
>   12 files changed, 879 insertions(+), 74 deletions(-)
>   create mode 100644 arch/arm64/boot/dts/mediatek/mt8196-gce.h
>
Re: [PATCH v8 00/20] Add GCE support for MT8196
Posted by Jason-JH Lin (林睿祥) 1 month, 3 weeks ago
On Mon, 2025-10-20 at 12:04 +0200, AngeloGioacchino Del Regno wrote:
> 
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> 
> 
> Il 17/10/25 08:44, Jason-JH Lin ha scritto:
> > From: Jason-jh Lin <jason-jh.lin@mediatek.corp-partner.google.com>
> > 
> > This patch series adds support for the MediaTek MT8196 SoC in the
> > CMDQ
> > driver and related subsystems. The changes include adding
> > compatible
> > names and iommus property, updating driver data to accommodate
> > hardware
> > changes, and modifying the usage of CMDQ APIs to support non-subsys
> > ID
> > hardware.
> > 
> 
> OK - after applying some last small changes as I pointed out in each
> patch,
> the code is ready IMO.
> 

Thank you very much! I'll fix them in the next version.

> To ease merging, though, I'd like you to split this series in
> multiple series:
>   1. Addition of new functions and support for MT8196
>   2. Migration of drm-mediatek, mailbox, mdp3 to the new functions
>   3. Removal of the temporary functions that were introduced only for
> migration
> 
> This gives everyone the opportunity of getting just the relevant
> parts for each
> merge cycle, avoiding possible confusion on what to pick and what not
> to.
> 

Sure, it make sense.

> Keep in mind that soc/mediatek and mailbox are from two different
> maintainers,
> and you may need to split this in more than 3 series.
> 
> I believe that we might at least get a mailbox immutable branch if we
> want to
> do this in 3 kernel versions, otherwise it's going to be four, I
> think.
> 

I think I will separate them to:
1. A single fixes patch for [PATCH 2/20].
2. Add GCE support for MT8196 (including pkt_write and jump API change)
3. Migration of drm-mediatek, mailbox, mdp3 to the new functions
4. Removal of the temporary functions for migration

I think putting the patches for the same purpose in the same series is
better for maintainers to find the relevant patches. But I'll try to
put the same maintainers' patches together as possible as I can, so
that maintainers can pull them to their tree easier.

Regards
Jason-JH Lin

> Cheers,
> Angelo
> 
> 
> > ---
> > Change in v8:
> > 1. Use function pointer to select the correct CMDQ APIs when
> > checking
> >     subsys is support for the HW component.
> > 
> > Change in v7:
> > 1. Rename cmdq_reg_shift_addr() and cmdq_reg_revert_addr() to
> >     cmdq_convert_gce_addr() and cmdq_revert_gce_addr().
> > 2. Change cmdq_vm_toggle to cmdq_vm_init().
> > 
> > Change in v6:
> > 1. Move the removal patches to the end of series.
> > 2. Fix build error for cmdq_pkt_jump_rel_temp patch.
> > 
> > Change in RESEND v5:
> > 1. Separate the removal of cmdq_get_shift_pa() from [PATCH v5
> > 03/19] to a
> >     single patch [PATCH RESEND v5 10/20].
> > 
> > Change in v5:
> > 1. Rebase on tag: next-20250424 + patch [1].
> > 2. Split adding driver data for MT8196 patch to 3 independent patch
> >     and add more detail commit message to each patch.
> > 3. Refine passing shift_pa as the parameter in API to storing it
> > into
> >     the cmdq_pkt.
> > 4. Refine DMA address potential issue in cmdq mailbox driver.
> > 5. Change the mminfra_offset related mbox API to passing it by
> > cmdq_pkt.
> > 6. Add new cmdq_pkt_write_pa() and cmdq_pkt_write_subsys() APIs to
> >     replace the cmdq_pkt_write().
> > 
> > [1] mailbox: mtk-cmdq: Refine GCE_GCTL_VALUE setting
> > -
> > https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek/patch/20250421035650.441383-1-jason-jh.lin@mediatek.com/__;!!CTRNKA9wMg0ARbw!hiTwkE6uvgHt9RF_2sZfL7pAIqMR2_g28hvNkqfCNPCvBhjCXVptG14sT8QST9Zgj3nwopa9ewwUAkbWnlyxUjK01b5TYwDVvQ$
> > 
> > Change in v4:
> > 1. Remove dt-binding header and add a gce header in dts folder.
> > 2. Remove dot in sign-off name.
> > 3. Change addr type from u32 to dma_addr_t for
> > cmdq_reg_shift_addr() and
> >     cmdq_reg_revert_addr().
> > 
> > Change in v3:
> > 1. Merge 2 dt-bindings pathes together and add more detail commit
> > message.
> > 2. Change type u32 to phys_addr_t for pa_base of struct
> > cmdq_client_reg.
> > 3. Remove cmdq_subsys_is_valid() and subsys_num in CMDQ driver.
> > 4. Add CMDQ_SUBSYS_INVALID to check subsys instead of using
> >     cmdq_subsys_is_invalid().
> > 5. Make use of CMDQ_THR_SPR0 define to the parameter of CMDQ APIs.
> > 6. Rebase on the new MACRO in mtk-mdp3-comp.h.
> > 
> > Change in v2:
> > 1. Remove the constant and fix warning in dt-bindings.
> > 2. Remove the pa_base parameter of CMDQ APIs and related
> > modification.
> > 3. Move subsys checking to client drivers and use 2 alternative
> >     CMDQ APIs to achieve the same functionality.
> > 
> > ---
> > 
> > Jason-JH Lin (20):
> 
> Series 1 start
> 
> >    arm64: dts: mediatek: Add GCE header for MT8196
> >    mailbox: mtk-cmdq: Refine DMA address handling for the command
> > buffer
> >    mailbox: mtk-cmdq: Add cmdq private data to cmdq_pkt for
> > generating
> >      instruction
> >    soc: mediatek: mtk-cmdq: Add cmdq_get_mbox_priv() in
> > cmdq_pkt_create()
> >    soc: mediatek: mtk-cmdq: Add cmdq_pkt_jump_rel_temp() for
> > removing
> >      shift_pa
> >    mailbox: mtk-cmdq: Add GCE hardware virtualization configuration
> >    mailbox: mtk-cmdq: Add mminfra_offset configuration for DRAM
> >      transaction
> >    mailbox: mtk-cmdq: Add driver data to support for MT8196
> >    soc: mediatek: mtk-cmdq: Add pa_base parsing for hardware
> > without
> >      subsys ID support
> >    soc: mediatek: mtk-cmdq: Extend cmdq_pkt_write API for SoCs
> > without
> >      subsys ID
> >    soc: mediatek: mtk-cmdq: Add mminfra_offset adjustment for DRAM
> >      addresses
> >    soc: mediatek: Use reg_write function pointer for subsys ID
> >      compatibility
> >    drm/mediatek:Use reg_write function pointer for subsys ID
> >      compatibility
> >    media: platform: mtk-mdp3: Refactor CMDQ writes for CMDQ API
> > change
> >    media: platform: mtk-mdp3: Change cmdq_pkt_jump_rel() to
> >      cmdq_pkt_jump_rel_temp()
> >    soc: mediatek: mtk-cmdq: Remove shift_pa parameter from
> >      cmdq_pkt_jump()
> >    media: platform: mtk-mdp3: Use cmdq_pkt_jump_rel() without
> > shift_pa
> >    soc: mediatek: mtk-cmdq: Remove cmdq_pkt_jump() and
> >      cmdq_pkt_jump_rel_temp()
> >    soc: mediatek: mtk-cmdq: Remove cmdq_pkt_write() and
> >      cmdq_pkt_write_mask()
> >    mailbox: mtk-cmdq: Remove unsued cmdq_get_shift_pa()
> > 
> >   arch/arm64/boot/dts/mediatek/mt8196-gce.h     | 612
> > ++++++++++++++++++
> >   drivers/gpu/drm/mediatek/mtk_ddp_comp.c       |  12 +-
> >   drivers/mailbox/mtk-cmdq-mailbox.c            | 113 +++-
> >   .../platform/mediatek/mdp3/mtk-mdp3-cmdq.c    |   6 +-
> >   .../platform/mediatek/mdp3/mtk-mdp3-comp.h    |   6 +-
> >   .../platform/mediatek/mdp3/mtk-mdp3-core.c    |   2 -
> >   .../platform/mediatek/mdp3/mtk-mdp3-core.h    |   1 -
> >   drivers/soc/mediatek/mtk-cmdq-helper.c        |  82 ++-
> >   drivers/soc/mediatek/mtk-mmsys.c              |   8 +-
> >   drivers/soc/mediatek/mtk-mutex.c              |   5 +-
> >   include/linux/mailbox/mtk-cmdq-mailbox.h      |  19 +-
> >   include/linux/soc/mediatek/mtk-cmdq.h         |  87 ++-
> >   12 files changed, 879 insertions(+), 74 deletions(-)
> >   create mode 100644 arch/arm64/boot/dts/mediatek/mt8196-gce.h
> > 
>