[v13,00/11] Add support for MT8195 SCP 2nd core

Message ID 20230607072222.8628-1-tinghan.shen@mediatek.com
Headers
Series Add support for MT8195 SCP 2nd core |

Message

Tinghan Shen June 7, 2023, 7:22 a.m. UTC
  The mediatek remoteproc driver currently only allows bringing up a 
single core SCP, e.g. MT8183. It also only bringing up the 1st 
core in SoCs with a dual-core SCP, e.g. MT8195. This series support 
to bring-up the 2nd core of the dual-core SCP.

v12 -> v13:
1. replace subdevice with new mediatek scp operations in patchset 7 
2. add review tag to patchset 3
3. modify mediatek,scp phandle name of video-codec@18000000 at patchset 11

v11 -> v12:
1. add scp_add_single/multi_core() to patchset 6
2. remove unused comment in patchset 6
3. rename list name from mtk_scp_cluster to mtk_scp_list
4. rewrite the multi-core probe flow 
5. disable rproc->autoboot and boot rproc by request_firmware_nowait at patchset 7 
6. remove patchset 7 review tag  

v10 -> v11:
1. rewrite patchset 5 to probe single-core SCP with the cluster list
2. Also in patchset 5, move the pointer of mtk_scp object from the
   platform data property to the driver data property 
3. move the appearance of mtk_scp cluster property to patcheset 7

v9 -> v10:
1. move the global mtk_scp list into the platform device driver data structure
2. remove an unnecessary if() condition

v8 -> v9:
1. initialize l1tcm_size/l1tcm_phys at patchset 05/11 
2. rewrite patchset 06/11 to unify the flow and remove hacks

v7 -> v8:
1. update the node name of mt8192 asurada SCP rpmsg subnode
2. squash register definitions into driver patches
3. initialize local variables on the declaration at patch v8 06/11 

v6 -> v7:
1. merge the mtk_scp_cluster struct into the mtk_scp structure
   at the "Probe multi-core SCP" patch

v5 -> v6:
1. move the mtk_scp_of_regs structure from mtk_common.h to mtk_scp.c
2. rename the SCP core 0 label from 'scp' to 'scp_c0'

v4 -> v5:
1. move resource release actions to the platform driver remove operation 
2. fix dual-core watchdog handling

v3 -> v4:
1. change the representation of dual-core SCP in dts file and update SCP yaml
2. rewrite SCP driver to reflect the change of dts node
3. drop 'remove redundant call of rproc_boot for SCP' in v3 for further investigation

v2 -> v3:
1. change the representation of dual-core SCP in dts file and update SCP yaml
2. rewrite SCP driver to reflect the change of dts node
3. add SCP core 1 node to mt8195.dtsi
4. remove redundant call of rproc_boot for SCP
5. refine IPI error message

v1 -> v2:
1. update dt-binding property description
2. remove kconfig for scp dual driver
3. merge mtk_scp_dual.c and mtk_scp_subdev.c to mtk_scp.c


Tinghan Shen (11):
  dt-bindings: remoteproc: mediatek: Improve the rpmsg subnode
    definition
  arm64: dts: mediatek: Update the node name of SCP rpmsg subnode
  dt-bindings: remoteproc: mediatek: Support MT8195 dual-core SCP
  remoteproc: mediatek: Add MT8195 SCP core 1 operations
  remoteproc: mediatek: Introduce cluster on single-core SCP
  remoteproc: mediatek: Probe multi-core SCP
  remoteproc: mediatek: Add scp_boot_peers and scp_shutdown_peers
    operations
  remoteproc: mediatek: Setup MT8195 SCP core 1 SRAM offset
  remoteproc: mediatek: Handle MT8195 SCP core 1 watchdog timeout
  remoteproc: mediatek: Refine ipi handler error message
  arm64: dts: mediatek: mt8195: Add SCP 2nd core

 .../bindings/remoteproc/mtk,scp.yaml          | 176 +++++++-
 .../arm64/boot/dts/mediatek/mt8183-kukui.dtsi |   2 +-
 .../boot/dts/mediatek/mt8192-asurada.dtsi     |   2 +-
 .../boot/dts/mediatek/mt8195-cherry.dtsi      |   6 +-
 arch/arm64/boot/dts/mediatek/mt8195.dtsi      |  32 +-
 drivers/remoteproc/mtk_common.h               |  26 ++
 drivers/remoteproc/mtk_scp.c                  | 425 ++++++++++++++++--
 7 files changed, 594 insertions(+), 75 deletions(-)
  

Comments

AngeloGioacchino Del Regno June 22, 2023, 10 a.m. UTC | #1
Il 07/06/23 09:22, Tinghan Shen ha scritto:
> The mediatek remoteproc driver currently only allows bringing up a
> single core SCP, e.g. MT8183. It also only bringing up the 1st
> core in SoCs with a dual-core SCP, e.g. MT8195. This series support
> to bring-up the 2nd core of the dual-core SCP.
> 

Hello TingHan,

Can you please address the comments on patch [05/11] and send a new version ASAP?
That's the only remaining issue, so after that the series should be ready.

Thanks,
Angelo

> v12 -> v13:
> 1. replace subdevice with new mediatek scp operations in patchset 7
> 2. add review tag to patchset 3
> 3. modify mediatek,scp phandle name of video-codec@18000000 at patchset 11
> 
> v11 -> v12:
> 1. add scp_add_single/multi_core() to patchset 6
> 2. remove unused comment in patchset 6
> 3. rename list name from mtk_scp_cluster to mtk_scp_list
> 4. rewrite the multi-core probe flow
> 5. disable rproc->autoboot and boot rproc by request_firmware_nowait at patchset 7
> 6. remove patchset 7 review tag
> 
> v10 -> v11:
> 1. rewrite patchset 5 to probe single-core SCP with the cluster list
> 2. Also in patchset 5, move the pointer of mtk_scp object from the
>     platform data property to the driver data property
> 3. move the appearance of mtk_scp cluster property to patcheset 7
> 
> v9 -> v10:
> 1. move the global mtk_scp list into the platform device driver data structure
> 2. remove an unnecessary if() condition
> 
> v8 -> v9:
> 1. initialize l1tcm_size/l1tcm_phys at patchset 05/11
> 2. rewrite patchset 06/11 to unify the flow and remove hacks
> 
> v7 -> v8:
> 1. update the node name of mt8192 asurada SCP rpmsg subnode
> 2. squash register definitions into driver patches
> 3. initialize local variables on the declaration at patch v8 06/11
> 
> v6 -> v7:
> 1. merge the mtk_scp_cluster struct into the mtk_scp structure
>     at the "Probe multi-core SCP" patch
> 
> v5 -> v6:
> 1. move the mtk_scp_of_regs structure from mtk_common.h to mtk_scp.c
> 2. rename the SCP core 0 label from 'scp' to 'scp_c0'
> 
> v4 -> v5:
> 1. move resource release actions to the platform driver remove operation
> 2. fix dual-core watchdog handling
> 
> v3 -> v4:
> 1. change the representation of dual-core SCP in dts file and update SCP yaml
> 2. rewrite SCP driver to reflect the change of dts node
> 3. drop 'remove redundant call of rproc_boot for SCP' in v3 for further investigation
> 
> v2 -> v3:
> 1. change the representation of dual-core SCP in dts file and update SCP yaml
> 2. rewrite SCP driver to reflect the change of dts node
> 3. add SCP core 1 node to mt8195.dtsi
> 4. remove redundant call of rproc_boot for SCP
> 5. refine IPI error message
> 
> v1 -> v2:
> 1. update dt-binding property description
> 2. remove kconfig for scp dual driver
> 3. merge mtk_scp_dual.c and mtk_scp_subdev.c to mtk_scp.c
> 
> 
> Tinghan Shen (11):
>    dt-bindings: remoteproc: mediatek: Improve the rpmsg subnode
>      definition
>    arm64: dts: mediatek: Update the node name of SCP rpmsg subnode
>    dt-bindings: remoteproc: mediatek: Support MT8195 dual-core SCP
>    remoteproc: mediatek: Add MT8195 SCP core 1 operations
>    remoteproc: mediatek: Introduce cluster on single-core SCP
>    remoteproc: mediatek: Probe multi-core SCP
>    remoteproc: mediatek: Add scp_boot_peers and scp_shutdown_peers
>      operations
>    remoteproc: mediatek: Setup MT8195 SCP core 1 SRAM offset
>    remoteproc: mediatek: Handle MT8195 SCP core 1 watchdog timeout
>    remoteproc: mediatek: Refine ipi handler error message
>    arm64: dts: mediatek: mt8195: Add SCP 2nd core
> 
>   .../bindings/remoteproc/mtk,scp.yaml          | 176 +++++++-
>   .../arm64/boot/dts/mediatek/mt8183-kukui.dtsi |   2 +-
>   .../boot/dts/mediatek/mt8192-asurada.dtsi     |   2 +-
>   .../boot/dts/mediatek/mt8195-cherry.dtsi      |   6 +-
>   arch/arm64/boot/dts/mediatek/mt8195.dtsi      |  32 +-
>   drivers/remoteproc/mtk_common.h               |  26 ++
>   drivers/remoteproc/mtk_scp.c                  | 425 ++++++++++++++++--
>   7 files changed, 594 insertions(+), 75 deletions(-)
>
  
Mathieu Poirier June 22, 2023, 5:17 p.m. UTC | #2
On Thu, Jun 22, 2023 at 12:00:08PM +0200, AngeloGioacchino Del Regno wrote:
> Il 07/06/23 09:22, Tinghan Shen ha scritto:
> > The mediatek remoteproc driver currently only allows bringing up a
> > single core SCP, e.g. MT8183. It also only bringing up the 1st
> > core in SoCs with a dual-core SCP, e.g. MT8195. This series support
> > to bring-up the 2nd core of the dual-core SCP.
> > 
> 
> Hello TingHan,
> 
> Can you please address the comments on patch [05/11] and send a new version ASAP?
> That's the only remaining issue, so after that the series should be ready.
> 

There is also the refactoring work in patch 07, and I expect that to take a
while.

> Thanks,
> Angelo
> 
> > v12 -> v13:
> > 1. replace subdevice with new mediatek scp operations in patchset 7
> > 2. add review tag to patchset 3
> > 3. modify mediatek,scp phandle name of video-codec@18000000 at patchset 11
> > 
> > v11 -> v12:
> > 1. add scp_add_single/multi_core() to patchset 6
> > 2. remove unused comment in patchset 6
> > 3. rename list name from mtk_scp_cluster to mtk_scp_list
> > 4. rewrite the multi-core probe flow
> > 5. disable rproc->autoboot and boot rproc by request_firmware_nowait at patchset 7
> > 6. remove patchset 7 review tag
> > 
> > v10 -> v11:
> > 1. rewrite patchset 5 to probe single-core SCP with the cluster list
> > 2. Also in patchset 5, move the pointer of mtk_scp object from the
> >     platform data property to the driver data property
> > 3. move the appearance of mtk_scp cluster property to patcheset 7
> > 
> > v9 -> v10:
> > 1. move the global mtk_scp list into the platform device driver data structure
> > 2. remove an unnecessary if() condition
> > 
> > v8 -> v9:
> > 1. initialize l1tcm_size/l1tcm_phys at patchset 05/11
> > 2. rewrite patchset 06/11 to unify the flow and remove hacks
> > 
> > v7 -> v8:
> > 1. update the node name of mt8192 asurada SCP rpmsg subnode
> > 2. squash register definitions into driver patches
> > 3. initialize local variables on the declaration at patch v8 06/11
> > 
> > v6 -> v7:
> > 1. merge the mtk_scp_cluster struct into the mtk_scp structure
> >     at the "Probe multi-core SCP" patch
> > 
> > v5 -> v6:
> > 1. move the mtk_scp_of_regs structure from mtk_common.h to mtk_scp.c
> > 2. rename the SCP core 0 label from 'scp' to 'scp_c0'
> > 
> > v4 -> v5:
> > 1. move resource release actions to the platform driver remove operation
> > 2. fix dual-core watchdog handling
> > 
> > v3 -> v4:
> > 1. change the representation of dual-core SCP in dts file and update SCP yaml
> > 2. rewrite SCP driver to reflect the change of dts node
> > 3. drop 'remove redundant call of rproc_boot for SCP' in v3 for further investigation
> > 
> > v2 -> v3:
> > 1. change the representation of dual-core SCP in dts file and update SCP yaml
> > 2. rewrite SCP driver to reflect the change of dts node
> > 3. add SCP core 1 node to mt8195.dtsi
> > 4. remove redundant call of rproc_boot for SCP
> > 5. refine IPI error message
> > 
> > v1 -> v2:
> > 1. update dt-binding property description
> > 2. remove kconfig for scp dual driver
> > 3. merge mtk_scp_dual.c and mtk_scp_subdev.c to mtk_scp.c
> > 
> > 
> > Tinghan Shen (11):
> >    dt-bindings: remoteproc: mediatek: Improve the rpmsg subnode
> >      definition
> >    arm64: dts: mediatek: Update the node name of SCP rpmsg subnode
> >    dt-bindings: remoteproc: mediatek: Support MT8195 dual-core SCP
> >    remoteproc: mediatek: Add MT8195 SCP core 1 operations
> >    remoteproc: mediatek: Introduce cluster on single-core SCP
> >    remoteproc: mediatek: Probe multi-core SCP
> >    remoteproc: mediatek: Add scp_boot_peers and scp_shutdown_peers
> >      operations
> >    remoteproc: mediatek: Setup MT8195 SCP core 1 SRAM offset
> >    remoteproc: mediatek: Handle MT8195 SCP core 1 watchdog timeout
> >    remoteproc: mediatek: Refine ipi handler error message
> >    arm64: dts: mediatek: mt8195: Add SCP 2nd core
> > 
> >   .../bindings/remoteproc/mtk,scp.yaml          | 176 +++++++-
> >   .../arm64/boot/dts/mediatek/mt8183-kukui.dtsi |   2 +-
> >   .../boot/dts/mediatek/mt8192-asurada.dtsi     |   2 +-
> >   .../boot/dts/mediatek/mt8195-cherry.dtsi      |   6 +-
> >   arch/arm64/boot/dts/mediatek/mt8195.dtsi      |  32 +-
> >   drivers/remoteproc/mtk_common.h               |  26 ++
> >   drivers/remoteproc/mtk_scp.c                  | 425 ++++++++++++++++--
> >   7 files changed, 594 insertions(+), 75 deletions(-)
> > 
>
  
AngeloGioacchino Del Regno June 23, 2023, 8:11 a.m. UTC | #3
Il 22/06/23 19:17, Mathieu Poirier ha scritto:
> On Thu, Jun 22, 2023 at 12:00:08PM +0200, AngeloGioacchino Del Regno wrote:
>> Il 07/06/23 09:22, Tinghan Shen ha scritto:
>>> The mediatek remoteproc driver currently only allows bringing up a
>>> single core SCP, e.g. MT8183. It also only bringing up the 1st
>>> core in SoCs with a dual-core SCP, e.g. MT8195. This series support
>>> to bring-up the 2nd core of the dual-core SCP.
>>>
>>
>> Hello TingHan,
>>
>> Can you please address the comments on patch [05/11] and send a new version ASAP?
>> That's the only remaining issue, so after that the series should be ready.
>>
> 
> There is also the refactoring work in patch 07, and I expect that to take a
> while.
> 

That's right, I forgot about that one. Thanks for that.

Cheers

>> Thanks,
>> Angelo
>>
>>> v12 -> v13:
>>> 1. replace subdevice with new mediatek scp operations in patchset 7
>>> 2. add review tag to patchset 3
>>> 3. modify mediatek,scp phandle name of video-codec@18000000 at patchset 11
>>>
>>> v11 -> v12:
>>> 1. add scp_add_single/multi_core() to patchset 6
>>> 2. remove unused comment in patchset 6
>>> 3. rename list name from mtk_scp_cluster to mtk_scp_list
>>> 4. rewrite the multi-core probe flow
>>> 5. disable rproc->autoboot and boot rproc by request_firmware_nowait at patchset 7
>>> 6. remove patchset 7 review tag
>>>
>>> v10 -> v11:
>>> 1. rewrite patchset 5 to probe single-core SCP with the cluster list
>>> 2. Also in patchset 5, move the pointer of mtk_scp object from the
>>>      platform data property to the driver data property
>>> 3. move the appearance of mtk_scp cluster property to patcheset 7
>>>
>>> v9 -> v10:
>>> 1. move the global mtk_scp list into the platform device driver data structure
>>> 2. remove an unnecessary if() condition
>>>
>>> v8 -> v9:
>>> 1. initialize l1tcm_size/l1tcm_phys at patchset 05/11
>>> 2. rewrite patchset 06/11 to unify the flow and remove hacks
>>>
>>> v7 -> v8:
>>> 1. update the node name of mt8192 asurada SCP rpmsg subnode
>>> 2. squash register definitions into driver patches
>>> 3. initialize local variables on the declaration at patch v8 06/11
>>>
>>> v6 -> v7:
>>> 1. merge the mtk_scp_cluster struct into the mtk_scp structure
>>>      at the "Probe multi-core SCP" patch
>>>
>>> v5 -> v6:
>>> 1. move the mtk_scp_of_regs structure from mtk_common.h to mtk_scp.c
>>> 2. rename the SCP core 0 label from 'scp' to 'scp_c0'
>>>
>>> v4 -> v5:
>>> 1. move resource release actions to the platform driver remove operation
>>> 2. fix dual-core watchdog handling
>>>
>>> v3 -> v4:
>>> 1. change the representation of dual-core SCP in dts file and update SCP yaml
>>> 2. rewrite SCP driver to reflect the change of dts node
>>> 3. drop 'remove redundant call of rproc_boot for SCP' in v3 for further investigation
>>>
>>> v2 -> v3:
>>> 1. change the representation of dual-core SCP in dts file and update SCP yaml
>>> 2. rewrite SCP driver to reflect the change of dts node
>>> 3. add SCP core 1 node to mt8195.dtsi
>>> 4. remove redundant call of rproc_boot for SCP
>>> 5. refine IPI error message
>>>
>>> v1 -> v2:
>>> 1. update dt-binding property description
>>> 2. remove kconfig for scp dual driver
>>> 3. merge mtk_scp_dual.c and mtk_scp_subdev.c to mtk_scp.c
>>>
>>>
>>> Tinghan Shen (11):
>>>     dt-bindings: remoteproc: mediatek: Improve the rpmsg subnode
>>>       definition
>>>     arm64: dts: mediatek: Update the node name of SCP rpmsg subnode
>>>     dt-bindings: remoteproc: mediatek: Support MT8195 dual-core SCP
>>>     remoteproc: mediatek: Add MT8195 SCP core 1 operations
>>>     remoteproc: mediatek: Introduce cluster on single-core SCP
>>>     remoteproc: mediatek: Probe multi-core SCP
>>>     remoteproc: mediatek: Add scp_boot_peers and scp_shutdown_peers
>>>       operations
>>>     remoteproc: mediatek: Setup MT8195 SCP core 1 SRAM offset
>>>     remoteproc: mediatek: Handle MT8195 SCP core 1 watchdog timeout
>>>     remoteproc: mediatek: Refine ipi handler error message
>>>     arm64: dts: mediatek: mt8195: Add SCP 2nd core
>>>
>>>    .../bindings/remoteproc/mtk,scp.yaml          | 176 +++++++-
>>>    .../arm64/boot/dts/mediatek/mt8183-kukui.dtsi |   2 +-
>>>    .../boot/dts/mediatek/mt8192-asurada.dtsi     |   2 +-
>>>    .../boot/dts/mediatek/mt8195-cherry.dtsi      |   6 +-
>>>    arch/arm64/boot/dts/mediatek/mt8195.dtsi      |  32 +-
>>>    drivers/remoteproc/mtk_common.h               |  26 ++
>>>    drivers/remoteproc/mtk_scp.c                  | 425 ++++++++++++++++--
>>>    7 files changed, 594 insertions(+), 75 deletions(-)
>>>
>>