The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/fb/splash_txt.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 1999 Michael Smith <msmith@freebsd.org>
    3  * Copyright (c) 1999 Kazutaka YOKOTA <yokota@freebsd.org>
    4  * Copyright (c) 2005 Antony Mawer <antony@mawer.org>
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
   17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
   20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   26  * SUCH DAMAGE.
   27  *
   28  * $FreeBSD: releng/9.1/sys/dev/fb/splash_txt.c 229994 2012-01-12 00:02:14Z eadler $
   29  */
   30 
   31 #include <sys/param.h>
   32 #include <sys/systm.h>
   33 #include <sys/module.h>
   34 #include <sys/kernel.h>
   35 #include <sys/consio.h>
   36 #include <sys/fbio.h>
   37 
   38 #include <machine/pc/display.h>
   39 
   40 #include <dev/fb/fbreg.h>
   41 #include <dev/fb/splashreg.h>
   42 #include <dev/syscons/syscons.h>
   43 
   44 static int splash_on = FALSE;
   45 
   46 static int txt_init(video_adapter_t *adp);
   47 static int txt_end(video_adapter_t *adp);
   48 static int txt_splash(video_adapter_t * adp, const int on);
   49 
   50 /* These are rows by columns of the text-mode display device. */
   51 #define BIN_IMAGE_WIDTH         80
   52 #define BIN_IMAGE_HEIGHT        25
   53 
   54 static splash_decoder_t txt_decoder = {
   55        .name = "splash_txt",
   56        .init = txt_init,
   57        .term = txt_end,
   58        .splash = txt_splash,
   59        .data_type = SPLASH_IMAGE,
   60 };
   61 
   62 SPLASH_DECODER(splash_txt, txt_decoder);
   63 
   64 static void
   65 draw_text_splash(sc_softc_t *sc)
   66 {
   67         u_int x, y;
   68         u_char ch, attr;
   69         u_char *pdata = txt_decoder.data;
   70 
   71         /* Init failed. */
   72         if (txt_decoder.data == NULL)
   73                 return;
   74         for (y = 0; y < BIN_IMAGE_HEIGHT; y++) {
   75                 for (x = 0; x < BIN_IMAGE_WIDTH; x++) {
   76                         ch = *pdata++;
   77                         attr = *pdata++;
   78                         sc_vtb_putc(&sc->cur_scp->scr,
   79                             (y * sc->cur_scp->xsize) + x,
   80                             sc->scr_map[ch], (int)attr << 8);
   81                 }
   82         }
   83 }
   84 
   85 static int
   86 txt_init(video_adapter_t *adp)
   87 {
   88 
   89         /* Ensure that the image data exists. */
   90         if (txt_decoder.data == NULL || txt_decoder.data_size <= 0) {
   91                 printf("splash_txt: No ASCII bitmap file found\n");
   92                 return (ENODEV);
   93         }
   94         return (0);
   95 }
   96 
   97 static int
   98 txt_end(video_adapter_t *adp)
   99 {
  100 
  101         return (0);
  102 }
  103 
  104 static int
  105 txt_splash(video_adapter_t *adp, const int on)
  106 {
  107         sc_softc_t *sc;
  108         scr_stat *scp;
  109 
  110         sc = sc_find_softc(adp, NULL);
  111         if (sc == NULL)
  112                 return (EAGAIN);
  113         scp = sc->cur_scp;
  114         if (on) {
  115                 if (!splash_on) {
  116                         if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
  117                                 return EAGAIN;
  118                         /* Clear screen and set border colour. */
  119                         sc_vtb_clear(&scp->scr, sc->scr_map[0x20],
  120                             (FG_LIGHTGREY | BG_BLACK) << 8);
  121                         (*vidsw[adp->va_index]->set_hw_cursor)(adp, -1, -1);
  122                         sc_set_border(scp, 0);
  123                         splash_on = TRUE;
  124                         /* Display the splash screen. */
  125                         draw_text_splash(sc);
  126                 }
  127                 return (0);
  128         } else {
  129                 /* The video mode will be restored by the caller. */
  130                 splash_on = FALSE;
  131                 return (0);
  132         }
  133 }
  134 
  135 

Cache object: 10d5b946dc4180f16015295a7128d3c3


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.