drm/mediatek: fix kernel oops if no crtc is found
[platform/kernel/linux-starfive.git] / drivers / gpu / drm / mediatek / mtk_drm_drv.c
index 93552d7..cdd506c 100644 (file)
@@ -288,6 +288,7 @@ static const struct mtk_mmsys_driver_data mt8186_mmsys_driver_data = {
 static const struct mtk_mmsys_driver_data mt8188_vdosys0_driver_data = {
        .main_path = mt8188_mtk_ddp_main,
        .main_len = ARRAY_SIZE(mt8188_mtk_ddp_main),
+       .mmsys_dev_num = 1,
 };
 
 static const struct mtk_mmsys_driver_data mt8192_mmsys_driver_data = {
@@ -420,6 +421,7 @@ static int mtk_drm_kms_init(struct drm_device *drm)
        struct mtk_drm_private *private = drm->dev_private;
        struct mtk_drm_private *priv_n;
        struct device *dma_dev = NULL;
+       struct drm_crtc *crtc;
        int ret, i, j;
 
        if (drm_firmware_drivers_only())
@@ -494,7 +496,9 @@ static int mtk_drm_kms_init(struct drm_device *drm)
        }
 
        /* Use OVL device for all DMA memory allocations */
-       dma_dev = mtk_drm_crtc_dma_dev_get(drm_crtc_from_index(drm, 0));
+       crtc = drm_crtc_from_index(drm, 0);
+       if (crtc)
+               dma_dev = mtk_drm_crtc_dma_dev_get(crtc);
        if (!dma_dev) {
                ret = -ENODEV;
                dev_err(drm->dev, "Need at least one OVL device\n");