#include <linux/slab.h>
 #include <linux/scatterlist.h>
 #include <linux/sizes.h>
-#include <linux/swiotlb.h>
 #include <linux/regulator/consumer.h>
 #include <linux/pm_runtime.h>
 #include <linux/of.h>
                mmc->max_segs = SDHCI_MAX_SEGS;
        } else if (host->flags & SDHCI_USE_SDMA) {
                mmc->max_segs = 1;
-               if (swiotlb_max_segment()) {
-                       unsigned int max_req_size = (1 << IO_TLB_SHIFT) *
-                                               IO_TLB_SEGSIZE;
-                       mmc->max_req_size = min(mmc->max_req_size,
-                                               max_req_size);
-               }
+               mmc->max_req_size = min_t(size_t, mmc->max_req_size,
+                                         dma_max_mapping_size(mmc_dev(mmc)));
        } else { /* PIO */
                mmc->max_segs = SDHCI_MAX_SEGS;
        }