Re: [PATCH v2] media: mtk-vcodec: fix builds when remoteproc is disabled

From: Hans Verkuil
Date: Thu Oct 08 2020 - 12:13:24 EST


On 08/10/2020 16:02, Alexandre Courbot wrote:
> Hi Hans, thanks for taking the time to look at this!
>
> On Thu, Oct 8, 2020 at 10:12 PM Hans Verkuil <hverkuil-cisco@xxxxxxxxx> wrote:
>>
>> On 08/10/2020 15:07, Hans Verkuil wrote:
>>> Hi Alexandre,
>>>
>>> On 04/10/2020 14:22, Alexandre Courbot wrote:
>>>> The addition of MT8183 support added a dependency on the SCP remoteproc
>>>> module. However the initial patch used the "select" Kconfig directive,
>>>> which may result in the SCP module to not be compiled if remoteproc was
>>>> disabled. In such a case, mtk-vcodec would try to link against
>>>> non-existent SCP symbols. "select" was clearly misused here as explained
>>>> in kconfig-language.txt.
>>>>
>>>> Replace this by a "depends" directive on at least one of the VPU and
>>>> SCP modules, to allow the driver to be compiled as long as one of these
>>>> is enabled, and adapt the code to support this new scenario.
>>>>
>>>> Also adapt the Kconfig text to explain the extra requirements for MT8173
>>>> and MT8183.
>>>>
>>>> Reported-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
>>>> Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxxxx>
>>>> Acked-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> # build-tested
>>>> ---
>>>> drivers/media/platform/Kconfig | 10 +--
>>>> .../media/platform/mtk-vcodec/mtk_vcodec_fw.c | 72 ++++++++++++-------
>>>> 2 files changed, 54 insertions(+), 28 deletions(-)
>>>>
>>>> diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
>>>> index a3cb104956d5..98eb62e49ec2 100644
>>>> --- a/drivers/media/platform/Kconfig
>>>> +++ b/drivers/media/platform/Kconfig
>>>> @@ -253,14 +253,16 @@ config VIDEO_MEDIATEK_VCODEC
>>>> depends on MTK_IOMMU || COMPILE_TEST
>>>> depends on VIDEO_DEV && VIDEO_V4L2
>>>> depends on ARCH_MEDIATEK || COMPILE_TEST
>>>> + depends on VIDEO_MEDIATEK_VPU || MTK_SCP
>>>
>>> Close, but no cigar.
>>>
>>> If VIDEO_MEDIATEK_VPU=y and MTK_SCP=m, then VIDEO_MEDIATEK_VCODEC can be configured
>>> to y, and then it won't be able to find the scp_ functions.
>>>
>>> To be honest, I'm not sure how to solve this.
>>
>> Found it. Add this:
>>
>> depends on MTK_SCP || !MTK_SCP
>> depends on VIDEO_MEDIATEK_VPU || !VIDEO_MEDIATEK_VPU
>>
>> Ugly as hell, but it appears to be the correct incantation for this.
>
> But doesn't it mean that the driver can be compiled if !MTK_SCP and
> !VIDEO_MEDIATEK_VPU? That's the one case we want to avoid.

No, because you still have:

depends on VIDEO_MEDIATEK_VPU || MTK_SCP

So at least one of these must be set.

Just try it :-)

Regards,

Hans