From 23b69344c1d84a365935cc01cb84b678422e9348 Mon Sep 17 00:00:00 2001 From: Robby Cai Date: Thu, 12 Sep 2013 14:39:57 +0800 Subject: [PATCH] ENGR00279373 epdc: add GFP_KERNEL flag to make dma memory allocated from cma Add GFP_KERNEL flag for dma_alloc_writecombine() and dma_alloc_coherent() to make dma memory allocated via cma. Otherwise it's from dma pool whose size is too small by default (256KB) and will cause allocation failure unless use 'coherent_pool=xxM' in cmdline. We prefer cma now. Signed-off-by: Robby Cai --- drivers/video/mxc/mxc_epdc_fb.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/video/mxc/mxc_epdc_fb.c b/drivers/video/mxc/mxc_epdc_fb.c index 1deae3339458..7bc0e4f981a1 100644 --- a/drivers/video/mxc/mxc_epdc_fb.c +++ b/drivers/video/mxc/mxc_epdc_fb.c @@ -4283,7 +4283,7 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, fb_data->waveform_buffer_virt = dma_alloc_coherent(fb_data->dev, fb_data->waveform_buffer_size, &fb_data->waveform_buffer_phys, - GFP_DMA); + GFP_DMA | GFP_KERNEL); if (fb_data->waveform_buffer_virt == NULL) { dev_err(fb_data->dev, "Can't allocate mem for waveform!\n"); return; @@ -4578,7 +4578,7 @@ int mxc_epdc_fb_probe(struct platform_device *pdev) info->screen_base = dma_alloc_writecombine(&pdev->dev, fb_data->map_size, &fb_data->phys_start, - GFP_DMA); + GFP_DMA | GFP_KERNEL); if (info->screen_base == NULL) { ret = -ENOMEM; @@ -4773,7 +4773,8 @@ int mxc_epdc_fb_probe(struct platform_device *pdev) */ fb_data->virt_addr_copybuf = dma_alloc_coherent(fb_data->info.device, fb_data->max_pix_size*2, - &fb_data->phys_addr_copybuf, GFP_DMA); + &fb_data->phys_addr_copybuf, + GFP_DMA | GFP_KERNEL); if (fb_data->virt_addr_copybuf == NULL) { ret = -ENOMEM; goto out_upd_buffers; @@ -4783,7 +4784,8 @@ int mxc_epdc_fb_probe(struct platform_device *pdev) /* Allocate memory for EPDC working buffer */ fb_data->working_buffer_virt = dma_alloc_coherent(&pdev->dev, fb_data->working_buffer_size, - &fb_data->working_buffer_phys, GFP_DMA); + &fb_data->working_buffer_phys, + GFP_DMA | GFP_KERNEL); if (fb_data->working_buffer_virt == NULL) { dev_err(&pdev->dev, "Can't allocate mem for working buf!\n"); ret = -ENOMEM; -- 2.39.5