summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobby Cai <R63905@freescale.com>2013-09-12 14:39:57 +0800
committerRobby Cai <R63905@freescale.com>2013-09-12 14:49:28 +0800
commit4b78cd78a3b306d128a731ddc9cefa49b9463c9c (patch)
treeec3d23331f131404cdfca7bb71286070eac1f938
parent42cf91aeea538459c3f45b2fe0b2460fae001ec5 (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.c10
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;