diff options
Diffstat (limited to 'recipes/kexecboot/linux-kexecboot-2.6.29/dss2/0023-DSS2-pass-the-default-FB-color-format-through-board.patch')
-rw-r--r-- | recipes/kexecboot/linux-kexecboot-2.6.29/dss2/0023-DSS2-pass-the-default-FB-color-format-through-board.patch | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/recipes/kexecboot/linux-kexecboot-2.6.29/dss2/0023-DSS2-pass-the-default-FB-color-format-through-board.patch b/recipes/kexecboot/linux-kexecboot-2.6.29/dss2/0023-DSS2-pass-the-default-FB-color-format-through-board.patch deleted file mode 100644 index 45045c4b4b..0000000000 --- a/recipes/kexecboot/linux-kexecboot-2.6.29/dss2/0023-DSS2-pass-the-default-FB-color-format-through-board.patch +++ /dev/null @@ -1,214 +0,0 @@ -From c02b843c2732bc7b15a3e35b5dd715d68225bbd1 Mon Sep 17 00:00:00 2001 -From: Imre Deak <imre.deak@nokia.com> -Date: Wed, 8 Apr 2009 12:51:46 +0200 -Subject: [PATCH 23/69] DSS2: pass the default FB color format through board info - -Add a field to the FB memory region platform data, so that board -init code can pass a default color format to the driver. Set this -format as an initial setting for the given FB. - -This is needed for an upcoming patch that adds detection of the -color format set by the bootloader. - -Signed-off-by: Imre Deak <imre.deak@nokia.com> ---- - drivers/video/omap2/omapfb/omapfb-main.c | 121 +++++++++++++++++++++++++++--- - drivers/video/omap2/omapfb/omapfb.h | 2 + - include/linux/omapfb.h | 5 + - 3 files changed, 117 insertions(+), 11 deletions(-) - -diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c -index 12ce0c3..67c67c2 100644 ---- a/drivers/video/omap2/omapfb/omapfb-main.c -+++ b/drivers/video/omap2/omapfb/omapfb-main.c -@@ -370,6 +370,21 @@ static enum omap_color_mode fb_mode_to_dss_mode(struct fb_var_screeninfo *var) - return -EINVAL; - } - -+static int dss_mode_to_fb_mode(enum omap_color_mode dssmode, -+ struct fb_var_screeninfo *var) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(omapfb_colormodes); ++i) { -+ struct omapfb_colormode *mode = &omapfb_colormodes[i]; -+ if (dssmode == mode->dssmode) { -+ assign_colormode_to_var(var, mode); -+ return 0; -+ } -+ } -+ return -ENOENT; -+} -+ - void set_fb_fix(struct fb_info *fbi) - { - struct fb_fix_screeninfo *fix = &fbi->fix; -@@ -1267,6 +1282,60 @@ static int omapfb_alloc_fbmem_display(struct fb_info *fbi, unsigned long size, - return omapfb_alloc_fbmem(fbi, size, paddr); - } - -+static enum omap_color_mode fb_format_to_dss_mode(enum omapfb_color_format format) -+{ -+ enum omap_color_mode mode; -+ -+ switch (format) { -+ case OMAPFB_COLOR_RGB565: -+ mode = OMAP_DSS_COLOR_RGB16; -+ break; -+ case OMAPFB_COLOR_YUV422: -+ mode = OMAP_DSS_COLOR_YUV2; -+ break; -+ case OMAPFB_COLOR_CLUT_8BPP: -+ mode = OMAP_DSS_COLOR_CLUT8; -+ break; -+ case OMAPFB_COLOR_CLUT_4BPP: -+ mode = OMAP_DSS_COLOR_CLUT4; -+ break; -+ case OMAPFB_COLOR_CLUT_2BPP: -+ mode = OMAP_DSS_COLOR_CLUT2; -+ break; -+ case OMAPFB_COLOR_CLUT_1BPP: -+ mode = OMAP_DSS_COLOR_CLUT1; -+ break; -+ case OMAPFB_COLOR_RGB444: -+ mode = OMAP_DSS_COLOR_RGB12U; -+ break; -+ case OMAPFB_COLOR_YUY422: -+ mode = OMAP_DSS_COLOR_UYVY; -+ break; -+ case OMAPFB_COLOR_ARGB16: -+ mode = OMAP_DSS_COLOR_ARGB16; -+ break; -+ case OMAPFB_COLOR_RGB24U: -+ mode = OMAP_DSS_COLOR_RGB24U; -+ break; -+ case OMAPFB_COLOR_RGB24P: -+ mode = OMAP_DSS_COLOR_RGB24P; -+ break; -+ case OMAPFB_COLOR_ARGB32: -+ mode = OMAP_DSS_COLOR_ARGB32; -+ break; -+ case OMAPFB_COLOR_RGBA32: -+ mode = OMAP_DSS_COLOR_RGBA32; -+ break; -+ case OMAPFB_COLOR_RGBX32: -+ mode = OMAP_DSS_COLOR_RGBX32; -+ break; -+ default: -+ mode = -EINVAL; -+ } -+ -+ return mode; -+} -+ - static int omapfb_parse_vram_param(const char *param, int max_entries, - unsigned long *sizes, unsigned long *paddrs) - { -@@ -1483,9 +1552,36 @@ int omapfb_fb_init(struct omapfb2_device *fbdev, struct fb_info *fbi) - } - - var->nonstd = 0; -+ var->bits_per_pixel = 0; - - var->rotate = ofbi->rotation; - -+ /* -+ * Check if there is a default color format set in the board file, -+ * and use this format instead the default deducted from the -+ * display bpp. -+ */ -+ if (fbdev->dev->platform_data) { -+ struct omapfb_platform_data *opd; -+ int id = ofbi->id; -+ -+ opd = fbdev->dev->platform_data; -+ if (opd->mem_desc.region[id].format_used) { -+ enum omap_color_mode mode; -+ enum omapfb_color_format format; -+ -+ format = opd->mem_desc.region[id].format; -+ mode = fb_format_to_dss_mode(format); -+ if (mode < 0) { -+ r = mode; -+ goto err; -+ } -+ r = dss_mode_to_fb_mode(mode, var); -+ if (r < 0) -+ goto err; -+ } -+ } -+ - if (display) { - u16 w, h; - display->get_resolution(display, &w, &h); -@@ -1502,16 +1598,18 @@ int omapfb_fb_init(struct omapfb2_device *fbdev, struct fb_info *fbi) - var->xres_virtual = var->xres; - var->yres_virtual = var->yres; - -- switch (display->get_recommended_bpp(display)) { -- case 16: -- var->bits_per_pixel = 16; -- break; -- case 24: -- var->bits_per_pixel = 32; -- break; -- default: -- dev_err(fbdev->dev, "illegal display bpp\n"); -- return -EINVAL; -+ if (!var->bits_per_pixel) { -+ switch (display->get_recommended_bpp(display)) { -+ case 16: -+ var->bits_per_pixel = 16; -+ break; -+ case 24: -+ var->bits_per_pixel = 32; -+ break; -+ default: -+ dev_err(fbdev->dev, "illegal display bpp\n"); -+ return -EINVAL; -+ } - } - } else { - /* if there's no display, let's just guess some basic values */ -@@ -1519,7 +1617,8 @@ int omapfb_fb_init(struct omapfb2_device *fbdev, struct fb_info *fbi) - var->yres = 240; - var->xres_virtual = var->xres; - var->yres_virtual = var->yres; -- var->bits_per_pixel = 16; -+ if (!var->bits_per_pixel) -+ var->bits_per_pixel = 16; - } - - r = check_fb_var(fbi, var); -diff --git a/drivers/video/omap2/omapfb/omapfb.h b/drivers/video/omap2/omapfb/omapfb.h -index 65e9e6e..2607def 100644 ---- a/drivers/video/omap2/omapfb/omapfb.h -+++ b/drivers/video/omap2/omapfb/omapfb.h -@@ -27,6 +27,8 @@ - #define DEBUG - #endif - -+#include <mach/display.h> -+ - #ifdef DEBUG - extern unsigned int omapfb_debug; - #define DBG(format, ...) \ -diff --git a/include/linux/omapfb.h b/include/linux/omapfb.h -index 96190b2..7a34f22 100644 ---- a/include/linux/omapfb.h -+++ b/include/linux/omapfb.h -@@ -298,6 +298,11 @@ struct omapfb_mem_region { - void __iomem *vaddr; - unsigned long size; - u8 type; /* OMAPFB_PLANE_MEM_* */ -+ enum omapfb_color_format format;/* OMAPFB_COLOR_* */ -+ unsigned format_used:1; /* Must be set when format is set. -+ * Needed b/c of the badly chosen 0 -+ * base for OMAPFB_COLOR_* values -+ */ - unsigned alloc:1; /* allocated by the driver */ - unsigned map:1; /* kernel mapped by the driver */ - }; --- -1.6.2.4 - |