Commit 4aa02c7c authored by Shawn Guo's avatar Shawn Guo

video: mxsfb: remove fb_phys/fb_size from platform_data

There is no in-tree users of mxsfb_platform_data fb_phys/fb_size.
With CMA support in the kernel, there is no real need for platform to
reserve memory and pass address and size into driver via platform_data.
So let's remove fb_phys/fb_size from mxsfb_platform_data to ease full
device tree adoption.
Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
parent 9e548579
...@@ -168,7 +168,6 @@ struct mxsfb_info { ...@@ -168,7 +168,6 @@ struct mxsfb_info {
unsigned ld_intf_width; unsigned ld_intf_width;
unsigned dotclk_delay; unsigned dotclk_delay;
const struct mxsfb_devdata *devdata; const struct mxsfb_devdata *devdata;
int mapped;
u32 sync; u32 sync;
}; };
...@@ -686,7 +685,7 @@ static int mxsfb_init_fbinfo(struct mxsfb_info *host) ...@@ -686,7 +685,7 @@ static int mxsfb_init_fbinfo(struct mxsfb_info *host)
struct mxsfb_platform_data *pdata = host->pdev->dev.platform_data; struct mxsfb_platform_data *pdata = host->pdev->dev.platform_data;
dma_addr_t fb_phys; dma_addr_t fb_phys;
void *fb_virt; void *fb_virt;
unsigned fb_size = pdata->fb_size; unsigned fb_size;
fb_info->fbops = &mxsfb_ops; fb_info->fbops = &mxsfb_ops;
fb_info->flags = FBINFO_FLAG_DEFAULT | FBINFO_READS_FAST; fb_info->flags = FBINFO_FLAG_DEFAULT | FBINFO_READS_FAST;
...@@ -706,30 +705,12 @@ static int mxsfb_init_fbinfo(struct mxsfb_info *host) ...@@ -706,30 +705,12 @@ static int mxsfb_init_fbinfo(struct mxsfb_info *host)
host->ld_intf_width = pdata->ld_intf_width; host->ld_intf_width = pdata->ld_intf_width;
/* Memory allocation for framebuffer */ /* Memory allocation for framebuffer */
if (pdata->fb_phys) { fb_size = SZ_2M;
if (!fb_size) fb_virt = alloc_pages_exact(fb_size, GFP_DMA);
return -EINVAL; if (!fb_virt)
return -ENOMEM;
fb_phys = pdata->fb_phys;
if (!request_mem_region(fb_phys, fb_size, host->pdev->name)) fb_phys = virt_to_phys(fb_virt);
return -ENOMEM;
fb_virt = ioremap(fb_phys, fb_size);
if (!fb_virt) {
release_mem_region(fb_phys, fb_size);
return -ENOMEM;
}
host->mapped = 1;
} else {
if (!fb_size)
fb_size = SZ_2M; /* default */
fb_virt = alloc_pages_exact(fb_size, GFP_DMA);
if (!fb_virt)
return -ENOMEM;
fb_phys = virt_to_phys(fb_virt);
}
fb_info->fix.smem_start = fb_phys; fb_info->fix.smem_start = fb_phys;
fb_info->screen_base = fb_virt; fb_info->screen_base = fb_virt;
...@@ -745,13 +726,7 @@ static void mxsfb_free_videomem(struct mxsfb_info *host) ...@@ -745,13 +726,7 @@ static void mxsfb_free_videomem(struct mxsfb_info *host)
{ {
struct fb_info *fb_info = &host->fb_info; struct fb_info *fb_info = &host->fb_info;
if (host->mapped) { free_pages_exact(fb_info->screen_base, fb_info->fix.smem_len);
iounmap(fb_info->screen_base);
release_mem_region(fb_info->fix.smem_start,
fb_info->screen_size);
} else {
free_pages_exact(fb_info->screen_base, fb_info->fix.smem_len);
}
} }
static struct platform_device_id mxsfb_devtype[] = { static struct platform_device_id mxsfb_devtype[] = {
......
...@@ -35,15 +35,6 @@ struct mxsfb_platform_data { ...@@ -35,15 +35,6 @@ struct mxsfb_platform_data {
unsigned dotclk_delay; /* refer manual HW_LCDIF_VDCTRL4 register */ unsigned dotclk_delay; /* refer manual HW_LCDIF_VDCTRL4 register */
unsigned ld_intf_width; /* refer STMLCDIF_* macros */ unsigned ld_intf_width; /* refer STMLCDIF_* macros */
unsigned fb_size; /* Size of the video memory. If zero a
* default will be used
*/
unsigned long fb_phys; /* physical address for the video memory. If
* zero the framebuffer memory will be dynamically
* allocated. If specified,fb_size must also be specified.
* fb_phys must be unused by Linux.
*/
u32 sync; /* sync mask, contains MXSFB specifics not u32 sync; /* sync mask, contains MXSFB specifics not
* carried in fb_info->var.sync * carried in fb_info->var.sync
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment