- memory-region : from reserved memory binding: phandles to two reserved
        memory regions, first is for "left" mfc memory bus interfaces,
        second if for the "right" mfc memory bus, used when no SYSMMU
-       support is available
+       support is available; used only by MFC v5 present in Exynos4 SoCs
 
 Obsolete properties:
   - samsung,mfc-r, samsung,mfc-l : support removed, please use memory-region
 
 static int s5p_mfc_configure_common_memory(struct s5p_mfc_dev *mfc_dev)
 {
        struct device *dev = &mfc_dev->plat_dev->dev;
-       unsigned long mem_size = SZ_8M;
+       unsigned long mem_size = SZ_4M;
        unsigned int bitmap_size;
 
+       if (IS_ENABLED(CONFIG_DMA_CMA) || exynos_is_iommu_available(dev))
+               mem_size = SZ_8M;
+
        if (mfc_mem_size)
                mem_size = memparse(mfc_mem_size, NULL);
 
 {
        struct device *dev = &mfc_dev->plat_dev->dev;
 
-       if (exynos_is_iommu_available(dev))
+       if (exynos_is_iommu_available(dev) || !IS_TWOPORT(mfc_dev))
                return s5p_mfc_configure_common_memory(mfc_dev);
        else
                return s5p_mfc_configure_2port_memory(mfc_dev);
        struct device *dev = &mfc_dev->plat_dev->dev;
 
        s5p_mfc_release_firmware(mfc_dev);
-       if (exynos_is_iommu_available(dev))
+       if (exynos_is_iommu_available(dev) || !IS_TWOPORT(mfc_dev))
                s5p_mfc_unconfigure_common_memory(mfc_dev);
        else
                s5p_mfc_unconfigure_2port_memory(mfc_dev);