Re: [PATCH 2/2] media: platform: mtk-mdp3: Use devicetree phandle to retrieve SCP

From: Chen-Yu Tsai
Date: Tue Sep 19 2023 - 06:22:11 EST


On Tue, Sep 19, 2023 at 6:00 PM AngeloGioacchino Del Regno
<angelogioacchino.delregno@xxxxxxxxxxxxx> wrote:
>
> Instead of walking the entire parent node for something that has the
> right compatible, use the scp_get() function provided by the MediaTek
> SCP remoteproc driver to retrieve a handle to mtk_scp through the
> devicetree "mediatek,scp" (phandle) property.
>
> In case of multi-core SCP, this also allows to select a specific core.
>
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>
> ---
> .../media/platform/mediatek/mdp3/mtk-mdp3-core.c | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c
> index 8677e7fd5083..d93d3833633e 100644
> --- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c
> +++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c
> @@ -254,13 +254,17 @@ static int mdp_probe(struct platform_device *pdev)
> goto err_destroy_job_wq;
> }
>
> - mm_pdev = __get_pdev_by_id(pdev, NULL, MDP_INFRA_SCP);
> - if (WARN_ON(!mm_pdev)) {
> - dev_err(&pdev->dev, "Could not get scp device\n");
> - ret = -ENODEV;
> - goto err_destroy_clock_wq;
> + mdp->scp = scp_get(pdev);
> + if (!mdp->scp) {
> + mm_pdev = __get_pdev_by_id(pdev, NULL, MDP_INFRA_SCP);
> + if (WARN_ON(!mm_pdev)) {
> + dev_err(&pdev->dev, "Could not get scp device\n");
> + ret = -ENODEV;
> + goto err_destroy_clock_wq;
> + }
> + mdp->scp = platform_get_drvdata(mm_pdev);

You need to keep the original code as a fallback for old device trees.

ChenYu

> }
> - mdp->scp = platform_get_drvdata(mm_pdev);
> +
> mdp->rproc_handle = scp_get_rproc(mdp->scp);
> dev_dbg(&pdev->dev, "MDP rproc_handle: %pK", mdp->rproc_handle);
>
> --
> 2.42.0
>