diff options
Diffstat (limited to 'drivers/video/s3c-fb.c')
-rw-r--r-- | drivers/video/s3c-fb.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c index b00c064beddf..77f576589a89 100644 --- a/drivers/video/s3c-fb.c +++ b/drivers/video/s3c-fb.c | |||
@@ -804,7 +804,8 @@ static void s3c_fb_free_memory(struct s3c_fb *sfb, struct s3c_fb_win *win) | |||
804 | { | 804 | { |
805 | struct fb_info *fbi = win->fbinfo; | 805 | struct fb_info *fbi = win->fbinfo; |
806 | 806 | ||
807 | dma_free_writecombine(sfb->dev, PAGE_ALIGN(fbi->fix.smem_len), | 807 | if (fbi->screen_base) |
808 | dma_free_writecombine(sfb->dev, PAGE_ALIGN(fbi->fix.smem_len), | ||
808 | fbi->screen_base, fbi->fix.smem_start); | 809 | fbi->screen_base, fbi->fix.smem_start); |
809 | } | 810 | } |
810 | 811 | ||
@@ -819,7 +820,8 @@ static void s3c_fb_release_win(struct s3c_fb *sfb, struct s3c_fb_win *win) | |||
819 | { | 820 | { |
820 | if (win->fbinfo) { | 821 | if (win->fbinfo) { |
821 | unregister_framebuffer(win->fbinfo); | 822 | unregister_framebuffer(win->fbinfo); |
822 | fb_dealloc_cmap(&win->fbinfo->cmap); | 823 | if (win->fbinfo->cmap.len) |
824 | fb_dealloc_cmap(&win->fbinfo->cmap); | ||
823 | s3c_fb_free_memory(sfb, win); | 825 | s3c_fb_free_memory(sfb, win); |
824 | framebuffer_release(win->fbinfo); | 826 | framebuffer_release(win->fbinfo); |
825 | } | 827 | } |
@@ -865,6 +867,7 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no, | |||
865 | WARN_ON(windata->win_mode.yres == 0); | 867 | WARN_ON(windata->win_mode.yres == 0); |
866 | 868 | ||
867 | win = fbinfo->par; | 869 | win = fbinfo->par; |
870 | *res = win; | ||
868 | var = &fbinfo->var; | 871 | var = &fbinfo->var; |
869 | win->variant = *variant; | 872 | win->variant = *variant; |
870 | win->fbinfo = fbinfo; | 873 | win->fbinfo = fbinfo; |
@@ -939,7 +942,6 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no, | |||
939 | return ret; | 942 | return ret; |
940 | } | 943 | } |
941 | 944 | ||
942 | *res = win; | ||
943 | dev_info(sfb->dev, "window %d: fb %s\n", win_no, fbinfo->fix.id); | 945 | dev_info(sfb->dev, "window %d: fb %s\n", win_no, fbinfo->fix.id); |
944 | 946 | ||
945 | return 0; | 947 | return 0; |