ramips: mtk-mmc: don't advertise highmem support.
authorNeilBrown <neil@brown.name>
Tue, 6 Feb 2018 01:22:48 +0000 (12:22 +1100)
committerFelix Fietkau <nbd@nbd.name>
Thu, 5 Apr 2018 17:48:47 +0000 (19:48 +0200)
of_dma_configure() sets a default ->dma_mask of
DMA_BIT_MASK(32), claiming devices can DMA from
the full 32bit address space.
The mtk-mmc driver does not support access to
highmem pages, so it is really limited to the
bottom 512M (actually 448M due to 64M of IO space).
Setting ->dma_mask to NULL causes mmc_setup_queue()
to fall-back to using BLK_BOUNCE_HIGH to tell the
block layer to use a bounce-buffer for any highmem
pages requiring IO.

Signed-off-by: NeilBrown <neil@brown.name>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
target/linux/ramips/files-4.14/drivers/mmc/host/mtk-mmc/sd.c
target/linux/ramips/files-4.9/drivers/mmc/host/mtk-mmc/sd.c

index ebfdc06..3a146f6 100644 (file)
@@ -2821,6 +2821,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
    
     host->dma.used_gpd = 0;
     host->dma.used_bd = 0;
+    mmc_dev(mmc)->dma_mask = NULL;
 
     /* using dma_alloc_coherent*/  /* todo: using 1, for all 4 slots */
     host->dma.gpd = dma_alloc_coherent(NULL, MAX_GPD_NUM * sizeof(gpd_t), &host->dma.gpd_addr, GFP_KERNEL); 
index ebfdc06..3a146f6 100644 (file)
@@ -2821,6 +2821,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
    
     host->dma.used_gpd = 0;
     host->dma.used_bd = 0;
+    mmc_dev(mmc)->dma_mask = NULL;
 
     /* using dma_alloc_coherent*/  /* todo: using 1, for all 4 slots */
     host->dma.gpd = dma_alloc_coherent(NULL, MAX_GPD_NUM * sizeof(gpd_t), &host->dma.gpd_addr, GFP_KERNEL);