Commit 2da185d6 authored by Alexandre Courbot's avatar Alexandre Courbot Committed by Mauro Carvalho Chehab
Browse files

media: mtk-vcodec: fix build breakage when one of VPU or SCP is enabled



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: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarAlexandre Courbot <acourbot@chromium.org>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Fixes: bf1d556a ("media: mtk-vcodec: abstract firmware interface")
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 46233e91
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -253,18 +253,32 @@ 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
	# The two following lines ensure we have the same state ("m" or "y") as
	# our dependencies, to avoid missing symbols during link.
	depends on VIDEO_MEDIATEK_VPU || !VIDEO_MEDIATEK_VPU
	depends on MTK_SCP || !MTK_SCP
	select VIDEOBUF2_DMA_CONTIG
	select V4L2_MEM2MEM_DEV
	select VIDEO_MEDIATEK_VPU
	select MTK_SCP
	select VIDEO_MEDIATEK_VCODEC_VPU if VIDEO_MEDIATEK_VPU
	select VIDEO_MEDIATEK_VCODEC_SCP if MTK_SCP
	help
	  Mediatek video codec driver provides HW capability to
	    encode and decode in a range of video formats
	    This driver rely on VPU driver to communicate with VPU.
	  encode and decode in a range of video formats on MT8173
	  and MT8183.

	  Note that support for MT8173 requires VIDEO_MEDIATEK_VPU to
	  also be selected. Support for MT8183 depends on MTK_SCP.

	  To compile this driver as modules, choose M here: the
	  modules will be called mtk-vcodec-dec and mtk-vcodec-enc.

config VIDEO_MEDIATEK_VCODEC_VPU
	bool

config VIDEO_MEDIATEK_VCODEC_SCP
	bool

config VIDEO_MEM2MEM_DEINTERLACE
	tristate "Deinterlace support"
	depends on VIDEO_DEV && VIDEO_V4L2
+8 −2
Original line number Diff line number Diff line
@@ -25,5 +25,11 @@ mtk-vcodec-enc-y := venc/venc_vp8_if.o \
mtk-vcodec-common-y := mtk_vcodec_intr.o \
		mtk_vcodec_util.o \
		mtk_vcodec_fw.o \
		mtk_vcodec_fw_vpu.o \
		mtk_vcodec_fw_scp.o

ifneq ($(CONFIG_VIDEO_MEDIATEK_VCODEC_VPU),)
mtk-vcodec-common-y += mtk_vcodec_fw_vpu.o
endif

ifneq ($(CONFIG_VIDEO_MEDIATEK_VCODEC_SCP),)
mtk-vcodec-common-y += mtk_vcodec_fw_scp.o
endif
+18 −0
Original line number Diff line number Diff line
@@ -27,8 +27,26 @@ struct mtk_vcodec_fw_ops {
	void (*release)(struct mtk_vcodec_fw *fw);
};

#if IS_ENABLED(CONFIG_VIDEO_MEDIATEK_VCODEC_VPU)
struct mtk_vcodec_fw *mtk_vcodec_fw_vpu_init(struct mtk_vcodec_dev *dev,
					     enum mtk_vcodec_fw_use fw_use);
#else
static inline struct mtk_vcodec_fw *
mtk_vcodec_fw_vpu_init(struct mtk_vcodec_dev *dev,
		       enum mtk_vcodec_fw_use fw_use)
{
	return ERR_PTR(-ENODEV);
}
#endif /* CONFIG_VIDEO_MEDIATEK_VCODEC_VPU */

#if IS_ENABLED(CONFIG_VIDEO_MEDIATEK_VCODEC_SCP)
struct mtk_vcodec_fw *mtk_vcodec_fw_scp_init(struct mtk_vcodec_dev *dev);
#else
static inline struct mtk_vcodec_fw *
mtk_vcodec_fw_scp_init(struct mtk_vcodec_dev *dev)
{
	return ERR_PTR(-ENODEV);
}
#endif /* CONFIG_VIDEO_MEDIATEK_VCODEC_SCP */

#endif /* _MTK_VCODEC_FW_PRIV_H_ */