drm/mediatek: Add encoder_index interface for mtk_ddp_comp_funcs
authorJason-JH.Lin <jason-jh.lin@mediatek.com>
Wed, 4 Oct 2023 02:40:08 +0000 (10:40 +0800)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Sun, 8 Oct 2023 00:53:24 +0000 (00:53 +0000)
To support dynamic connector selection function, each ddp_comp need to
get their encoder_index to identify which connector should be selected.

Add encoder_index interface for mtk_ddp_comp_funcs to get the encoder
identifier by drm_encoder_index().
Then drm driver will call mtk_ddp_comp_encoder_index_set() to store the
encoder_index to each ddp_comp in connector routes.

Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231004024013.18956-5-jason-jh.lin@mediatek.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h

index febcaeef16a1f2c5e6da29bf8d58865c69337efa..0797b3ac75d8c41d424fcdf53cfa1de500d50a76 100644 (file)
@@ -80,12 +80,14 @@ struct mtk_ddp_comp_funcs {
        void (*disconnect)(struct device *dev, struct device *mmsys_dev, unsigned int next);
        void (*add)(struct device *dev, struct mtk_mutex *mutex);
        void (*remove)(struct device *dev, struct mtk_mutex *mutex);
+       unsigned int (*encoder_index)(struct device *dev);
 };
 
 struct mtk_ddp_comp {
        struct device *dev;
        int irq;
        unsigned int id;
+       int encoder_index;
        const struct mtk_ddp_comp_funcs *funcs;
 };
 
@@ -275,6 +277,12 @@ static inline bool mtk_ddp_comp_disconnect(struct mtk_ddp_comp *comp, struct dev
        return false;
 }
 
+static inline void mtk_ddp_comp_encoder_index_set(struct mtk_ddp_comp *comp)
+{
+       if (comp->funcs && comp->funcs->encoder_index)
+               comp->encoder_index = (int)comp->funcs->encoder_index(comp->dev);
+}
+
 int mtk_ddp_comp_get_id(struct device_node *node,
                        enum mtk_ddp_comp_type comp_type);
 unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm,