Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=90da63e54604fd515c17014a0a7f332a018a0a11
Commit:     90da63e54604fd515c17014a0a7f332a018a0a11
Parent:     b6e8f00fcd56b426371334d722d1f3fb251b7290
Author:     Geert Uytterhoeven <[EMAIL PROTECTED]>
AuthorDate: Tue Jul 17 04:05:50 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Jul 17 10:23:13 2007 -0700

    fbdev: extract fb_show_logo_line()
    
    The Cell Broadband Engine contains a 64-bit PowerPC core with 2 hardware
    threads (called PPEs) and 8 Synergistic Processing Engines (called SPEs).
    When booting Linux, 2 penguins logos are shown on the graphical console by
    the standard frame buffer console logo code.
    
    To emphasize the existence of the SPEs (which can be used under Linux), we
    added a second row of (smaller) helper penguin logos, one for each SPE.
    
    A sample screenshot can be found at
    
http://www.kernel.org/pub/linux/kernel/people/geoff/cell/debian-penguin-shot.png
    (or on the ps3linux T-shirts we wore at OLS :-)
    
    This patch:
    
    Extract the code to draw one line of logos into fb_show_logo_line()
    
    Signed-off-by: Geert Uytterhoeven <[EMAIL PROTECTED]>
    Signed-off-by: Geoff Levand <[EMAIL PROTECTED]>
    Acked-By: James Simmons <[EMAIL PROTECTED]>
    Cc: "Antonino A. Daplas" <[EMAIL PROTECTED]>
    Cc: Benjamin Herrenschmidt <[EMAIL PROTECTED]>
    Cc: Paul Mackerras <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/video/fbmem.c |   39 +++++++++++++++++++++++----------------
 1 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 7f3a0cc..717684b 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -470,22 +470,24 @@ int fb_prepare_logo(struct fb_info *info, int rotate)
        return fb_logo.logo->height;
 }
 
-int fb_show_logo(struct fb_info *info, int rotate)
+static int fb_show_logo_line(struct fb_info *info, int rotate,
+                            const struct linux_logo *logo, int y,
+                            unsigned int n)
 {
        u32 *palette = NULL, *saved_pseudo_palette = NULL;
        unsigned char *logo_new = NULL, *logo_rotate = NULL;
        struct fb_image image;
 
        /* Return if the frame buffer is not mapped or suspended */
-       if (fb_logo.logo == NULL || info->state != FBINFO_STATE_RUNNING ||
+       if (logo == NULL || info->state != FBINFO_STATE_RUNNING ||
            info->flags & FBINFO_MODULE)
                return 0;
 
        image.depth = 8;
-       image.data = fb_logo.logo->data;
+       image.data = logo->data;
 
        if (fb_logo.needs_cmapreset)
-               fb_set_logocmap(info, fb_logo.logo);
+               fb_set_logocmap(info, logo);
 
        if (fb_logo.needs_truepalette || 
            fb_logo.needs_directpalette) {
@@ -494,17 +496,16 @@ int fb_show_logo(struct fb_info *info, int rotate)
                        return 0;
 
                if (fb_logo.needs_truepalette)
-                       fb_set_logo_truepalette(info, fb_logo.logo, palette);
+                       fb_set_logo_truepalette(info, logo, palette);
                else
-                       fb_set_logo_directpalette(info, fb_logo.logo, palette);
+                       fb_set_logo_directpalette(info, logo, palette);
 
                saved_pseudo_palette = info->pseudo_palette;
                info->pseudo_palette = palette;
        }
 
        if (fb_logo.depth <= 4) {
-               logo_new = kmalloc(fb_logo.logo->width * fb_logo.logo->height, 
-                                  GFP_KERNEL);
+               logo_new = kmalloc(logo->width * logo->height, GFP_KERNEL);
                if (logo_new == NULL) {
                        kfree(palette);
                        if (saved_pseudo_palette)
@@ -512,29 +513,35 @@ int fb_show_logo(struct fb_info *info, int rotate)
                        return 0;
                }
                image.data = logo_new;
-               fb_set_logo(info, fb_logo.logo, logo_new, fb_logo.depth);
+               fb_set_logo(info, logo, logo_new, fb_logo.depth);
        }
 
        image.dx = 0;
-       image.dy = 0;
-       image.width = fb_logo.logo->width;
-       image.height = fb_logo.logo->height;
+       image.dy = y;
+       image.width = logo->width;
+       image.height = logo->height;
 
        if (rotate) {
-               logo_rotate = kmalloc(fb_logo.logo->width *
-                                     fb_logo.logo->height, GFP_KERNEL);
+               logo_rotate = kmalloc(logo->width *
+                                     logo->height, GFP_KERNEL);
                if (logo_rotate)
                        fb_rotate_logo(info, logo_rotate, &image, rotate);
        }
 
-       fb_do_show_logo(info, &image, rotate, num_online_cpus());
+       fb_do_show_logo(info, &image, rotate, n);
 
        kfree(palette);
        if (saved_pseudo_palette != NULL)
                info->pseudo_palette = saved_pseudo_palette;
        kfree(logo_new);
        kfree(logo_rotate);
-       return fb_logo.logo->height;
+       return logo->height;
+}
+
+int fb_show_logo(struct fb_info *info, int rotate)
+{
+       return fb_show_logo_line(info, rotate, fb_logo.logo, 0,
+                                num_online_cpus());
 }
 #else
 int fb_prepare_logo(struct fb_info *info, int rotate) { return 0; }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to