This reverts commit f79081b4b7
.
Patch has broken byteorder handling: RAMFBCfg fields are in bigendian
byteorder, the reset function doesn't care so native byteorder is used
instead. Given this went unnoticed so far the feature is obviously
unused, so just revert the patch.
Cc: Hou Qiming <hqm03ster@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Message-id: 20200429115236.28709-2-kraxel@redhat.com
63 lines
1.6 KiB
C
63 lines
1.6 KiB
C
#include "qemu/osdep.h"
|
|
#include "qapi/error.h"
|
|
#include "qemu/module.h"
|
|
#include "hw/loader.h"
|
|
#include "hw/qdev-properties.h"
|
|
#include "hw/display/ramfb.h"
|
|
#include "ui/console.h"
|
|
|
|
#define RAMFB(obj) OBJECT_CHECK(RAMFBStandaloneState, (obj), TYPE_RAMFB_DEVICE)
|
|
|
|
typedef struct RAMFBStandaloneState {
|
|
SysBusDevice parent_obj;
|
|
QemuConsole *con;
|
|
RAMFBState *state;
|
|
} RAMFBStandaloneState;
|
|
|
|
static void display_update_wrapper(void *dev)
|
|
{
|
|
RAMFBStandaloneState *ramfb = RAMFB(dev);
|
|
|
|
if (0 /* native driver active */) {
|
|
/* non-standalone device would run native display update here */;
|
|
} else {
|
|
ramfb_display_update(ramfb->con, ramfb->state);
|
|
}
|
|
}
|
|
|
|
static const GraphicHwOps wrapper_ops = {
|
|
.gfx_update = display_update_wrapper,
|
|
};
|
|
|
|
static void ramfb_realizefn(DeviceState *dev, Error **errp)
|
|
{
|
|
RAMFBStandaloneState *ramfb = RAMFB(dev);
|
|
|
|
ramfb->con = graphic_console_init(dev, 0, &wrapper_ops, dev);
|
|
ramfb->state = ramfb_setup(errp);
|
|
}
|
|
|
|
static void ramfb_class_initfn(ObjectClass *klass, void *data)
|
|
{
|
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
|
|
|
set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
|
|
dc->realize = ramfb_realizefn;
|
|
dc->desc = "ram framebuffer standalone device";
|
|
dc->user_creatable = true;
|
|
}
|
|
|
|
static const TypeInfo ramfb_info = {
|
|
.name = TYPE_RAMFB_DEVICE,
|
|
.parent = TYPE_SYS_BUS_DEVICE,
|
|
.instance_size = sizeof(RAMFBStandaloneState),
|
|
.class_init = ramfb_class_initfn,
|
|
};
|
|
|
|
static void ramfb_register_types(void)
|
|
{
|
|
type_register_static(&ramfb_info);
|
|
}
|
|
|
|
type_init(ramfb_register_types)
|