|
@@ -261,6 +261,9 @@ static inline void atmel_lcdfb_free_video_memory(struct atmel_lcdfb_info *sinfo)
|
|
/**
|
|
/**
|
|
* atmel_lcdfb_alloc_video_memory - Allocate framebuffer memory
|
|
* atmel_lcdfb_alloc_video_memory - Allocate framebuffer memory
|
|
* @sinfo: the frame buffer to allocate memory for
|
|
* @sinfo: the frame buffer to allocate memory for
|
|
|
|
+ *
|
|
|
|
+ * This function is called only from the atmel_lcdfb_probe()
|
|
|
|
+ * so no locking by fb_info->mm_lock around smem_len setting is needed.
|
|
*/
|
|
*/
|
|
static int atmel_lcdfb_alloc_video_memory(struct atmel_lcdfb_info *sinfo)
|
|
static int atmel_lcdfb_alloc_video_memory(struct atmel_lcdfb_info *sinfo)
|
|
{
|
|
{
|
|
@@ -270,9 +273,7 @@ static int atmel_lcdfb_alloc_video_memory(struct atmel_lcdfb_info *sinfo)
|
|
|
|
|
|
smem_len = (var->xres_virtual * var->yres_virtual
|
|
smem_len = (var->xres_virtual * var->yres_virtual
|
|
* ((var->bits_per_pixel + 7) / 8));
|
|
* ((var->bits_per_pixel + 7) / 8));
|
|
- mutex_lock(&info->mm_lock);
|
|
|
|
info->fix.smem_len = max(smem_len, sinfo->smem_len);
|
|
info->fix.smem_len = max(smem_len, sinfo->smem_len);
|
|
- mutex_unlock(&info->mm_lock);
|
|
|
|
|
|
|
|
info->screen_base = dma_alloc_writecombine(info->device, info->fix.smem_len,
|
|
info->screen_base = dma_alloc_writecombine(info->device, info->fix.smem_len,
|
|
(dma_addr_t *)&info->fix.smem_start, GFP_KERNEL);
|
|
(dma_addr_t *)&info->fix.smem_start, GFP_KERNEL);
|