diff options
author | Robby Cai <R63905@freescale.com> | 2013-09-12 14:39:57 +0800 |
---|---|---|
committer | Robby Cai <R63905@freescale.com> | 2013-09-12 14:49:28 +0800 |
commit | 4b78cd78a3b306d128a731ddc9cefa49b9463c9c (patch) | |
tree | ec3d23331f131404cdfca7bb71286070eac1f938 | |
parent | 42cf91aeea538459c3f45b2fe0b2460fae001ec5 (diff) |
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 <R63905@freescale.com>
-rw-r--r-- | drivers/video/mxc/mxc_epdc_fb.c | 10 |
1 files 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; |