aboutsummaryrefslogtreecommitdiff
path: root/hw/display/goldfish_fb.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/display/goldfish_fb.c')
-rw-r--r--hw/display/goldfish_fb.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/hw/display/goldfish_fb.c b/hw/display/goldfish_fb.c
index f590bc1fd..9083dd5f0 100644
--- a/hw/display/goldfish_fb.c
+++ b/hw/display/goldfish_fb.c
@@ -15,6 +15,7 @@
#include "ui/console.h"
#include "ui/pixel_ops.h"
#include "trace.h"
+#include "hw/display/goldfish_fb.h"
#define BITS 8
#include "goldfish_fb_template.h"
@@ -65,6 +66,21 @@ struct goldfish_fb_state {
#define GOLDFISH_FB_SAVE_VERSION 3
+/* Console hooks */
+void goldfish_fb_set_rotation(int rotation)
+{
+ DeviceState *dev = qdev_find_recursive(sysbus_get_default(), TYPE_GOLDFISH_FB);
+ if (dev) {
+ struct goldfish_fb_state *s = GOLDFISH_FB(dev);
+ DisplaySurface *ds = qemu_console_surface(s->con);
+ s->rotation = rotation;
+ s->need_update = 1;
+ qemu_console_resize(s->con, surface_height(ds), surface_width(ds));
+ } else {
+ fprintf(stderr,"%s: unable to find FB dev\n", __func__);
+ }
+}
+
static void goldfish_fb_save(QEMUFile* f, void* opaque)
{
struct goldfish_fb_state* s = opaque;
@@ -395,6 +411,8 @@ static int goldfish_fb_init(SysBusDevice *sbdev)
DeviceState *dev = DEVICE(sbdev);
struct goldfish_fb_state *s = GOLDFISH_FB(dev);
+ dev->id = g_strdup(TYPE_GOLDFISH_FB);
+
sysbus_init_irq(sbdev, &s->irq);
s->con = graphic_console_init(dev, 0, &goldfish_fb_ops, s);