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

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 <[email protected]>
---
.../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);
}
- 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


2023-09-19 10:28:30

by Chen-Yu Tsai

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

On Tue, Sep 19, 2023 at 6:00 PM AngeloGioacchino Del Regno
<[email protected]> 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 <[email protected]>
> ---
> .../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
>

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

Il 19/09/23 12:21, Chen-Yu Tsai ha scritto:
> On Tue, Sep 19, 2023 at 6:00 PM AngeloGioacchino Del Regno
> <[email protected]> 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 <[email protected]>
>> ---
>> .../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.
>

I haven't removed the original code, it *is* there as a fallback :-)

mdp->scp = scp_get() <--- new
if (!mdp->scp) { fallback }

Regards,
Angelo

> 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
>>
> _______________________________________________
> Kernel mailing list -- [email protected]
> To unsubscribe send an email to [email protected]


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

Il 19/09/23 12:26, Chen-Yu Tsai ha scritto:
> On Tue, Sep 19, 2023 at 6:24 PM AngeloGioacchino Del Regno
> <[email protected]> wrote:
>>
>> Il 19/09/23 12:21, Chen-Yu Tsai ha scritto:
>>> On Tue, Sep 19, 2023 at 6:00 PM AngeloGioacchino Del Regno
>>> <[email protected]> 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 <[email protected]>
>>>> ---
>>>> .../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.
>>>
>>
>> I haven't removed the original code, it *is* there as a fallback :-)
>>
>> mdp->scp = scp_get() <--- new
>> if (!mdp->scp) { fallback }
>
> I see it now. I guess it's time to call it a day... I even replied with
> the wrong email ...
>
> Reviewed-by: Chen-Yu Tsai <[email protected]>

hahaha! no worries, it happens :-)

Thanks for the review btw.

Cheers!
Angelo

>
>>> 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
>>>>
>>> _______________________________________________
>>> Kernel mailing list -- [email protected]
>>> To unsubscribe send an email to [email protected]
>>
>>

2023-09-19 23:32:55

by Chen-Yu Tsai

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

On Tue, Sep 19, 2023 at 6:24 PM AngeloGioacchino Del Regno
<[email protected]> wrote:
>
> Il 19/09/23 12:21, Chen-Yu Tsai ha scritto:
> > On Tue, Sep 19, 2023 at 6:00 PM AngeloGioacchino Del Regno
> > <[email protected]> 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 <[email protected]>
> >> ---
> >> .../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.
> >
>
> I haven't removed the original code, it *is* there as a fallback :-)
>
> mdp->scp = scp_get() <--- new
> if (!mdp->scp) { fallback }

I see it now. I guess it's time to call it a day... I even replied with
the wrong email ...

Reviewed-by: Chen-Yu Tsai <[email protected]>

> > 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
> >>
> > _______________________________________________
> > Kernel mailing list -- [email protected]
> > To unsubscribe send an email to [email protected]
>
>