]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - drivers/video/vesa_fb.c
video: ipu: initialize g_ipu_clk, g_ldb_clk statically
[karo-tx-uboot.git] / drivers / video / vesa_fb.c
1 /*
2  * VESA frame buffer driver
3  *
4  * Copyright (C) 2014 Google, Inc
5  *
6  * SPDX-License-Identifier:     GPL-2.0+
7  */
8
9 #include <common.h>
10 #include <pci_rom.h>
11 #include <video_fb.h>
12 #include <vbe.h>
13
14 /*
15  * The Graphic Device
16  */
17 GraphicDevice ctfb;
18
19 void *video_hw_init(void)
20 {
21         GraphicDevice *gdev = &ctfb;
22         int bits_per_pixel;
23         pci_dev_t dev;
24         int ret;
25
26         printf("Video: ");
27         if (!ll_boot_init()) {
28                 /*
29                  * If we are running from EFI or coreboot, this driver can't
30                  * work.
31                  */
32                 printf("Not available (previous bootloader prevents it)\n");
33                 return NULL;
34         }
35         if (vbe_get_video_info(gdev)) {
36                 dev = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8, 0);
37                 if (dev == -1) {
38                         printf("no card detected\n");
39                         return NULL;
40                 }
41                 bootstage_start(BOOTSTAGE_ID_ACCUM_LCD, "vesa display");
42                 ret = pci_run_vga_bios(dev, NULL, PCI_ROM_USE_NATIVE |
43                                        PCI_ROM_ALLOW_FALLBACK);
44                 bootstage_accum(BOOTSTAGE_ID_ACCUM_LCD);
45                 if (ret) {
46                         printf("failed to run video BIOS: %d\n", ret);
47                         return NULL;
48                 }
49         }
50
51         if (vbe_get_video_info(gdev)) {
52                 printf("No video mode configured\n");
53                 return NULL;
54         }
55
56         bits_per_pixel = gdev->gdfBytesPP * 8;
57         sprintf(gdev->modeIdent, "%dx%dx%d", gdev->winSizeX, gdev->winSizeY,
58                 bits_per_pixel);
59         printf("%s\n", gdev->modeIdent);
60         debug("Frame buffer at %x\n", gdev->pciBase);
61
62         return (void *)gdev;
63 }