mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-19 16:38:53 +09:00
![Simon Glass](/assets/img/avatar_default.png)
Update the video driver to support this feature and enable it on minnowmax to speed up the display. With this change, the time taken to print the environment to the display without CONFIG_CONSOLE_SCROLL_LINES is reduced from over 13 seconds to 300ms, at 1280x1024. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Anatolij Gustschin <agust@denx.de> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com>
62 lines
1.3 KiB
C
62 lines
1.3 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (C) 2016, Bin Meng <bmeng.cn@gmail.com>
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <dm.h>
|
|
#include <log.h>
|
|
#include <pci.h>
|
|
#include <vbe.h>
|
|
#include <video.h>
|
|
#include <asm/mtrr.h>
|
|
|
|
static int vesa_video_probe(struct udevice *dev)
|
|
{
|
|
struct video_uc_platdata *plat = dev_get_uclass_platdata(dev);
|
|
ulong fbbase;
|
|
int ret;
|
|
|
|
ret = vbe_setup_video(dev, NULL);
|
|
if (ret)
|
|
return log_ret(ret);
|
|
|
|
/* Use write-combining for the graphics memory, 256MB */
|
|
fbbase = IS_ENABLED(CONFIG_VIDEO_COPY) ? plat->copy_base : plat->base;
|
|
mtrr_add_request(MTRR_TYPE_WRCOMB, fbbase, 256 << 20);
|
|
mtrr_commit(true);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int vesa_video_bind(struct udevice *dev)
|
|
{
|
|
struct video_uc_platdata *uc_plat = dev_get_uclass_platdata(dev);
|
|
|
|
/* Set the maximum supported resolution */
|
|
uc_plat->size = 2560 * 1600 * 4;
|
|
log_debug("%s: Frame buffer size %x\n", __func__, uc_plat->size);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static const struct udevice_id vesa_video_ids[] = {
|
|
{ .compatible = "vesa-fb" },
|
|
{ }
|
|
};
|
|
|
|
U_BOOT_DRIVER(vesa_video) = {
|
|
.name = "vesa_video",
|
|
.id = UCLASS_VIDEO,
|
|
.of_match = vesa_video_ids,
|
|
.bind = vesa_video_bind,
|
|
.probe = vesa_video_probe,
|
|
};
|
|
|
|
static struct pci_device_id vesa_video_supported[] = {
|
|
{ PCI_DEVICE_CLASS(PCI_CLASS_DISPLAY_VGA << 8, ~0) },
|
|
{ },
|
|
};
|
|
|
|
U_BOOT_PCI_DEVICE(vesa_video, vesa_video_supported);
|