mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
hw/display/ramfb: initialize fw-config space with xres/ yres
If xres / yres were specified in QEMU command line, write them as an initial resolution to the fw-config space on guest reset, which a later BIOS / OVMF patch can take advantage of. Signed-off-by: HOU Qiming <hqm03ster@gmail.com> Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com> Message-id: 20190513115731.17588-4-marcel.apfelbaum@gmail.com [fixed malformed patch] Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
a9e0cb67b7
commit
f79081b4b7
5 changed files with 30 additions and 6 deletions
|
@ -12,6 +12,7 @@
|
|||
*/
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qemu/option.h"
|
||||
#include "hw/loader.h"
|
||||
#include "hw/display/ramfb.h"
|
||||
#include "ui/console.h"
|
||||
|
@ -29,6 +30,7 @@ struct QEMU_PACKED RAMFBCfg {
|
|||
struct RAMFBState {
|
||||
DisplaySurface *ds;
|
||||
uint32_t width, height;
|
||||
uint32_t starting_width, starting_height;
|
||||
struct RAMFBCfg cfg;
|
||||
bool locked;
|
||||
};
|
||||
|
@ -114,9 +116,11 @@ static void ramfb_reset(void *opaque)
|
|||
RAMFBState *s = (RAMFBState *)opaque;
|
||||
s->locked = false;
|
||||
memset(&s->cfg, 0, sizeof(s->cfg));
|
||||
s->cfg.width = s->starting_width;
|
||||
s->cfg.height = s->starting_height;
|
||||
}
|
||||
|
||||
RAMFBState *ramfb_setup(Error **errp)
|
||||
RAMFBState *ramfb_setup(DeviceState* dev, Error **errp)
|
||||
{
|
||||
FWCfgState *fw_cfg = fw_cfg_find();
|
||||
RAMFBState *s;
|
||||
|
@ -128,6 +132,16 @@ RAMFBState *ramfb_setup(Error **errp)
|
|||
|
||||
s = g_new0(RAMFBState, 1);
|
||||
|
||||
const char *s_fb_width = qemu_opt_get(dev->opts, "xres");
|
||||
const char *s_fb_height = qemu_opt_get(dev->opts, "yres");
|
||||
if (s_fb_width) {
|
||||
s->cfg.width = atoi(s_fb_width);
|
||||
s->starting_width = s->cfg.width;
|
||||
}
|
||||
if (s_fb_height) {
|
||||
s->cfg.height = atoi(s_fb_height);
|
||||
s->starting_height = s->cfg.height;
|
||||
}
|
||||
s->locked = false;
|
||||
|
||||
rom_add_vga("vgabios-ramfb.bin");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue