Re: [PATCH v4, 04/15] media: mtk-vcodec: Use component framework to manage each hardware information

From: Tzung-Bi Shih
Date: Tue Aug 10 2021 - 07:14:00 EST


On Tue, Aug 10, 2021 at 04:30:36PM +0800, Yunfei Dong wrote:
> > Looking up "mediatek,mtk-vcodec-core" to determine if it uses component framwork sounds like...
> Add prameter in pdata, for all platform will use compoent after mt8183
>
> >> + if (dev->is_comp_supported) {
> >> + ret = mtk_vcodec_init_master(dev);
> >> + if (ret < 0)
> >> + goto err_component_match;
> >> + } else {
> >> + platform_set_drvdata(pdev, dev);
> >> + }
> > + Has asked the same question in [1]. Why it removes the
> > +platform_set_drvdata() above? mtk_vcodec_init_master() also calls platform_set_drvdata().
> Must call component_master_add_with_match after platform_set_drvdata for component architecture.
I am confused. The condition "call component_master_add_with_match
after platform_set_drvdata" is already true even if without the
change. See below.

> +static int mtk_vcodec_init_master(struct mtk_vcodec_dev *dev)
> +{
> + struct platform_device *pdev = dev->plat_dev;
> + struct component_match *match;
> + int ret;
> +
> + match = mtk_vcodec_match_add(dev);
> + if (IS_ERR_OR_NULL(match))
> + return -EINVAL;
> +
> + platform_set_drvdata(pdev, dev);
> + ret = component_master_add_with_match(&pdev->dev, &mtk_vdec_ops, match);
Point [1].

> @@ -311,7 +413,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
> MTK_VCODEC_DEC_NAME);
> video_set_drvdata(vfd_dec, dev);
> dev->vfd_dec = vfd_dec;
> - platform_set_drvdata(pdev, dev);
Point [2].

> @@ -362,8 +463,16 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
> mtk_v4l2_debug(0, "decoder registered as /dev/video%d",
> vfd_dec->num);
>
> - return 0;
> + if (dev->vdec_pdata->is_comp_supported) {
> + ret = mtk_vcodec_init_master(dev);
Point [3].


The calling sequence is: [2] -> component_master_add_with_match() -> [1] -> [3].

Don't understand why it removes the platform_set_drvdata() at point [2].