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

Cache object: 2dbc0ad09f95b07dfc8569685325b3e4


[ 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.