qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion
@ 2012-01-23 10:34 Hervé Poussineau
  2012-01-23 10:34 ` [Qemu-devel] [PATCH 1/3] jazz-led: use trace framework Hervé Poussineau
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Hervé Poussineau @ 2012-01-23 10:34 UTC (permalink / raw)
  To: qemu-devel; +Cc: Anthony Liguori, Hervé Poussineau

Following patches update jazz-led emulation to current Qemu standards:
- use trace framework to report events
- convert to qdev

Hervé Poussineau (3):
  jazz-led: use trace framework
  jazz-led: convert to qdev
  jazz-led: compile it only twice

 Makefile.objs                        |    1 +
 Makefile.target                      |    1 -
 default-configs/mips-softmmu.mak     |    1 +
 default-configs/mips64-softmmu.mak   |    1 +
 default-configs/mips64el-softmmu.mak |    1 +
 default-configs/mipsel-softmmu.mak   |    1 +
 hw/jazz_led.c                        |  171 ++++++++++++++--------------------
 hw/mips.h                            |    3 -
 hw/mips_jazz.c                       |    2 +-
 trace-events                         |    4 +
 10 files changed, 79 insertions(+), 107 deletions(-)

-- 
1.7.7.3

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 1/3] jazz-led: use trace framework
  2012-01-23 10:34 [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion Hervé Poussineau
@ 2012-01-23 10:34 ` Hervé Poussineau
  2012-01-23 10:34 ` [Qemu-devel] [PATCH 2/3] jazz-led: convert to qdev Hervé Poussineau
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Hervé Poussineau @ 2012-01-23 10:34 UTC (permalink / raw)
  To: qemu-devel; +Cc: Anthony Liguori, Hervé Poussineau


Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
---
 hw/jazz_led.c |   26 +++++++++-----------------
 trace-events  |    4 ++++
 2 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/hw/jazz_led.c b/hw/jazz_led.c
index f8a2182..1af9268 100644
--- a/hw/jazz_led.c
+++ b/hw/jazz_led.c
@@ -26,17 +26,7 @@
 #include "mips.h"
 #include "console.h"
 #include "pixel_ops.h"
-
-//#define DEBUG_LED
-
-#ifdef DEBUG_LED
-#define DPRINTF(fmt, ...) \
-do { printf("jazz led: " fmt , ## __VA_ARGS__); } while (0)
-#else
-#define DPRINTF(fmt, ...) do {} while (0)
-#endif
-#define BADF(fmt, ...) \
-do { fprintf(stderr, "jazz led ERROR: " fmt , ## __VA_ARGS__);} while (0)
+#include "trace.h"
 
 typedef enum {
     REDRAW_NONE = 0, REDRAW_SEGMENTS = 1, REDRAW_BACKGROUND = 2,
@@ -52,18 +42,18 @@ typedef struct LedState {
 static uint32_t led_readb(void *opaque, target_phys_addr_t addr)
 {
     LedState *s = opaque;
-    uint32_t val;
+    uint8_t val;
 
     switch (addr) {
         case 0:
             val = s->segments;
             break;
         default:
-            BADF("invalid read at [" TARGET_FMT_plx "]\n", addr);
+            error_report("invalid read at [" TARGET_FMT_plx "]\n", addr);
             val = 0;
     }
 
-    DPRINTF("read addr=" TARGET_FMT_plx " val=0x%02x\n", addr, val);
+    trace_jazz_led_read(addr, val);
 
     return val;
 }
@@ -101,16 +91,18 @@ static uint32_t led_readl(void *opaque, target_phys_addr_t addr)
 static void led_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
 {
     LedState *s = opaque;
+    uint8_t new_val = val & 0xff;
 
-    DPRINTF("write addr=" TARGET_FMT_plx " val=0x%02x\n", addr, val);
+    trace_jazz_led_write(addr, new_val);
 
     switch (addr) {
         case 0:
-            s->segments = val;
+            s->segments = new_val;
             s->state |= REDRAW_SEGMENTS;
             break;
         default:
-            BADF("invalid write of 0x%08x at [" TARGET_FMT_plx "]\n", val, addr);
+            error_report("invalid write of 0x%x at [" TARGET_FMT_plx "]\n",
+                         new_val, addr);
             break;
     }
 }
diff --git a/trace-events b/trace-events
index 834eb7f..f38c2da 100644
--- a/trace-events
+++ b/trace-events
@@ -129,6 +129,10 @@ ecc_mem_readl_ecr1(uint32_t ret) "Read event count 2 %08x"
 ecc_diag_mem_writeb(uint64_t addr, uint32_t val) "Write diagnostic %"PRId64" = %02x"
 ecc_diag_mem_readb(uint64_t addr, uint32_t ret) "Read diagnostic %"PRId64"= %02x"
 
+# hw/jazz-led.c
+jazz_led_read(uint64_t addr, uint8_t val) "read addr=0x%"PRIx64": 0x%x"
+jazz_led_write(uint64_t addr, uint8_t new) "write addr=0x%"PRIx64": 0x%x"
+
 # hw/lance.c
 lance_mem_readw(uint64_t addr, uint32_t ret) "addr=%"PRIx64"val=0x%04x"
 lance_mem_writew(uint64_t addr, uint32_t val) "addr=%"PRIx64"val=0x%04x"
-- 
1.7.7.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 2/3] jazz-led: convert to qdev
  2012-01-23 10:34 [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion Hervé Poussineau
  2012-01-23 10:34 ` [Qemu-devel] [PATCH 1/3] jazz-led: use trace framework Hervé Poussineau
@ 2012-01-23 10:34 ` Hervé Poussineau
  2012-01-23 10:34 ` [Qemu-devel] [PATCH 3/3] jazz-led: compile it only twice Hervé Poussineau
  2012-02-01 20:44 ` [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion Anthony Liguori
  3 siblings, 0 replies; 6+ messages in thread
From: Hervé Poussineau @ 2012-01-23 10:34 UTC (permalink / raw)
  To: qemu-devel; +Cc: Anthony Liguori, Hervé Poussineau

Some simplifications in I/O functions are possible because
Jazz LED only registers one byte of I/O.

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
---
 hw/jazz_led.c  |  153 +++++++++++++++++++++++--------------------------------
 hw/mips.h      |    3 -
 hw/mips_jazz.c |    2 +-
 3 files changed, 65 insertions(+), 93 deletions(-)

diff --git a/hw/jazz_led.c b/hw/jazz_led.c
index 1af9268..de401a9 100644
--- a/hw/jazz_led.c
+++ b/hw/jazz_led.c
@@ -1,7 +1,7 @@
 /*
  * QEMU JAZZ LED emulator.
  *
- * Copyright (c) 2007 Hervé Poussineau
+ * Copyright (c) 2007-2012 Herve Poussineau
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -22,123 +22,53 @@
  * THE SOFTWARE.
  */
 
-#include "hw.h"
-#include "mips.h"
 #include "console.h"
 #include "pixel_ops.h"
 #include "trace.h"
+#include "sysbus.h"
 
 typedef enum {
     REDRAW_NONE = 0, REDRAW_SEGMENTS = 1, REDRAW_BACKGROUND = 2,
 } screen_state_t;
 
 typedef struct LedState {
+    SysBusDevice busdev;
     MemoryRegion iomem;
     uint8_t segments;
     DisplayState *ds;
     screen_state_t state;
 } LedState;
 
-static uint32_t led_readb(void *opaque, target_phys_addr_t addr)
+static uint64_t jazz_led_read(void *opaque, target_phys_addr_t addr,
+                              unsigned int size)
 {
     LedState *s = opaque;
     uint8_t val;
 
-    switch (addr) {
-        case 0:
-            val = s->segments;
-            break;
-        default:
-            error_report("invalid read at [" TARGET_FMT_plx "]\n", addr);
-            val = 0;
-    }
-
+    val = s->segments;
     trace_jazz_led_read(addr, val);
 
     return val;
 }
 
-static uint32_t led_readw(void *opaque, target_phys_addr_t addr)
-{
-    uint32_t v;
-#ifdef TARGET_WORDS_BIGENDIAN
-    v = led_readb(opaque, addr) << 8;
-    v |= led_readb(opaque, addr + 1);
-#else
-    v = led_readb(opaque, addr);
-    v |= led_readb(opaque, addr + 1) << 8;
-#endif
-    return v;
-}
-
-static uint32_t led_readl(void *opaque, target_phys_addr_t addr)
-{
-    uint32_t v;
-#ifdef TARGET_WORDS_BIGENDIAN
-    v = led_readb(opaque, addr) << 24;
-    v |= led_readb(opaque, addr + 1) << 16;
-    v |= led_readb(opaque, addr + 2) << 8;
-    v |= led_readb(opaque, addr + 3);
-#else
-    v = led_readb(opaque, addr);
-    v |= led_readb(opaque, addr + 1) << 8;
-    v |= led_readb(opaque, addr + 2) << 16;
-    v |= led_readb(opaque, addr + 3) << 24;
-#endif
-    return v;
-}
-
-static void led_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
+static void jazz_led_write(void *opaque, target_phys_addr_t addr,
+                           uint64_t val, unsigned int size)
 {
     LedState *s = opaque;
     uint8_t new_val = val & 0xff;
 
     trace_jazz_led_write(addr, new_val);
 
-    switch (addr) {
-        case 0:
-            s->segments = new_val;
-            s->state |= REDRAW_SEGMENTS;
-            break;
-        default:
-            error_report("invalid write of 0x%x at [" TARGET_FMT_plx "]\n",
-                         new_val, addr);
-            break;
-    }
-}
-
-static void led_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
-{
-#ifdef TARGET_WORDS_BIGENDIAN
-    led_writeb(opaque, addr, (val >> 8) & 0xff);
-    led_writeb(opaque, addr + 1, val & 0xff);
-#else
-    led_writeb(opaque, addr, val & 0xff);
-    led_writeb(opaque, addr + 1, (val >> 8) & 0xff);
-#endif
-}
-
-static void led_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
-{
-#ifdef TARGET_WORDS_BIGENDIAN
-    led_writeb(opaque, addr, (val >> 24) & 0xff);
-    led_writeb(opaque, addr + 1, (val >> 16) & 0xff);
-    led_writeb(opaque, addr + 2, (val >> 8) & 0xff);
-    led_writeb(opaque, addr + 3, val & 0xff);
-#else
-    led_writeb(opaque, addr, val & 0xff);
-    led_writeb(opaque, addr + 1, (val >> 8) & 0xff);
-    led_writeb(opaque, addr + 2, (val >> 16) & 0xff);
-    led_writeb(opaque, addr + 3, (val >> 24) & 0xff);
-#endif
+    s->segments = new_val;
+    s->state |= REDRAW_SEGMENTS;
 }
 
 static const MemoryRegionOps led_ops = {
-    .old_mmio = {
-        .read = { led_readb, led_readw, led_readl, },
-        .write = { led_writeb, led_writew, led_writel, },
-    },
+    .read = jazz_led_read,
+    .write = jazz_led_write,
     .endianness = DEVICE_NATIVE_ENDIAN,
+    .impl.min_access_size = 1,
+    .impl.max_access_size = 1,
 };
 
 /***********************************************************/
@@ -296,20 +226,65 @@ static void jazz_led_text_update(void *opaque, console_ch_t *chardata)
     dpy_update(s->ds, 0, 0, 2, 1);
 }
 
-void jazz_led_init(MemoryRegion *address_space, target_phys_addr_t base)
+static int jazz_led_post_load(void *opaque, int version_id)
 {
-    LedState *s;
+    /* force refresh */
+    jazz_led_invalidate_display(opaque);
 
-    s = g_malloc0(sizeof(LedState));
+    return 0;
+}
 
-    s->state = REDRAW_SEGMENTS | REDRAW_BACKGROUND;
+static const VMStateDescription vmstate_jazz_led = {
+    .name = "jazz-led",
+    .version_id = 0,
+    .minimum_version_id = 0,
+    .minimum_version_id_old = 0,
+    .post_load = jazz_led_post_load,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT8(segments, LedState),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
+static int jazz_led_init(SysBusDevice *dev)
+{
+    LedState *s = FROM_SYSBUS(LedState, dev);
 
     memory_region_init_io(&s->iomem, &led_ops, s, "led", 1);
-    memory_region_add_subregion(address_space, base, &s->iomem);
+    sysbus_init_mmio(dev, &s->iomem);
 
     s->ds = graphic_console_init(jazz_led_update_display,
                                  jazz_led_invalidate_display,
                                  jazz_led_screen_dump,
                                  jazz_led_text_update, s);
+
+    return 0;
+}
+
+static void jazz_led_reset(DeviceState *d)
+{
+    LedState *s = DO_UPCAST(LedState, busdev.qdev, d);
+
+    s->segments = 0;
+    s->state = REDRAW_SEGMENTS | REDRAW_BACKGROUND;
     qemu_console_resize(s->ds, 60, 80);
 }
+
+static SysBusDeviceInfo jazz_led_info = {
+    .init = jazz_led_init,
+    .qdev.name = "jazz-led",
+    .qdev.desc = "Jazz LED display",
+    .qdev.size = sizeof(LedState),
+    .qdev.vmsd = &vmstate_jazz_led,
+    .qdev.reset = jazz_led_reset,
+    .qdev.props = (Property[]) {
+        DEFINE_PROP_END_OF_LIST(),
+    }
+};
+
+static void jazz_led_register(void)
+{
+    sysbus_register_withprop(&jazz_led_info);
+}
+
+device_init(jazz_led_register);
diff --git a/hw/mips.h b/hw/mips.h
index 22156fc..a7e6d4c 100644
--- a/hw/mips.h
+++ b/hw/mips.h
@@ -10,9 +10,6 @@ PCIBus *gt64120_register(qemu_irq *pic);
 /* bonito.c */
 PCIBus *bonito_init(qemu_irq *pic);
 
-/* jazz_led.c */
-void jazz_led_init(MemoryRegion *address_space, target_phys_addr_t base);
-
 /* rc4030.c */
 typedef struct rc4030DMAState *rc4030_dma;
 void rc4030_dma_memory_rw(void *opaque, target_phys_addr_t addr, uint8_t *buf, int len, int is_write);
diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c
index 63165b9..ef39b20 100644
--- a/hw/mips_jazz.c
+++ b/hw/mips_jazz.c
@@ -293,7 +293,7 @@ static void mips_jazz_init(MemoryRegion *address_space,
     sysbus_mmio_map(sysbus, 0, 0x80009000);
 
     /* LED indicator */
-    jazz_led_init(address_space, 0x8000f000);
+    sysbus_create_simple("jazz-led", 0x8000f000, NULL);
 }
 
 static
-- 
1.7.7.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 3/3] jazz-led: compile it only twice
  2012-01-23 10:34 [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion Hervé Poussineau
  2012-01-23 10:34 ` [Qemu-devel] [PATCH 1/3] jazz-led: use trace framework Hervé Poussineau
  2012-01-23 10:34 ` [Qemu-devel] [PATCH 2/3] jazz-led: convert to qdev Hervé Poussineau
@ 2012-01-23 10:34 ` Hervé Poussineau
  2012-02-01 20:44 ` [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion Anthony Liguori
  3 siblings, 0 replies; 6+ messages in thread
From: Hervé Poussineau @ 2012-01-23 10:34 UTC (permalink / raw)
  To: qemu-devel; +Cc: Anthony Liguori, Hervé Poussineau


Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
---
 Makefile.objs                        |    1 +
 Makefile.target                      |    1 -
 default-configs/mips-softmmu.mak     |    1 +
 default-configs/mips64-softmmu.mak   |    1 +
 default-configs/mips64el-softmmu.mak |    1 +
 default-configs/mipsel-softmmu.mak   |    1 +
 6 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/Makefile.objs b/Makefile.objs
index f94c881..4c7cd7f 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -243,6 +243,7 @@ hw-obj-$(CONFIG_PPCE500_PCI) += ppce500_pci.o
 # MIPS devices
 hw-obj-$(CONFIG_PIIX4) += piix4.o
 hw-obj-$(CONFIG_G364FB) += g364fb.o
+hw-obj-$(CONFIG_JAZZ_LED) += jazz_led.o
 
 # PCI watchdog devices
 hw-obj-$(CONFIG_PCI) += wdt_i6300esb.o
diff --git a/Makefile.target b/Makefile.target
index 06d79b8..04c416f 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -291,7 +291,6 @@ obj-lm32-y += framebuffer.o
 obj-mips-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
 obj-mips-y += mips_addr.o mips_timer.o mips_int.o
 obj-mips-y += vga.o
-obj-mips-y += jazz_led.o
 obj-mips-y += gt64xxx.o mc146818rtc.o
 obj-mips-y += cirrus_vga.o
 obj-mips-$(CONFIG_FULONG) += bonito.o vt82c686.o mips_fulong2e.o
diff --git a/default-configs/mips-softmmu.mak b/default-configs/mips-softmmu.mak
index 94a3486..274da5f 100644
--- a/default-configs/mips-softmmu.mak
+++ b/default-configs/mips-softmmu.mak
@@ -28,3 +28,4 @@ CONFIG_MIPSNET=y
 CONFIG_PFLASH_CFI01=y
 CONFIG_G364FB=y
 CONFIG_I8259=y
+CONFIG_JAZZ_LED=y
diff --git a/default-configs/mips64-softmmu.mak b/default-configs/mips64-softmmu.mak
index b5d3108..0eac8bc 100644
--- a/default-configs/mips64-softmmu.mak
+++ b/default-configs/mips64-softmmu.mak
@@ -28,3 +28,4 @@ CONFIG_MIPSNET=y
 CONFIG_PFLASH_CFI01=y
 CONFIG_G364FB=y
 CONFIG_I8259=y
+CONFIG_JAZZ_LED=y
diff --git a/default-configs/mips64el-softmmu.mak b/default-configs/mips64el-softmmu.mak
index 2831f44..2ec6d10 100644
--- a/default-configs/mips64el-softmmu.mak
+++ b/default-configs/mips64el-softmmu.mak
@@ -30,3 +30,4 @@ CONFIG_PFLASH_CFI01=y
 CONFIG_FULONG=y
 CONFIG_G364FB=y
 CONFIG_I8259=y
+CONFIG_JAZZ_LED=y
diff --git a/default-configs/mipsel-softmmu.mak b/default-configs/mipsel-softmmu.mak
index 14c949d..4766af5 100644
--- a/default-configs/mipsel-softmmu.mak
+++ b/default-configs/mipsel-softmmu.mak
@@ -28,3 +28,4 @@ CONFIG_MIPSNET=y
 CONFIG_PFLASH_CFI01=y
 CONFIG_G364FB=y
 CONFIG_I8259=y
+CONFIG_JAZZ_LED=y
-- 
1.7.7.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion
  2012-01-23 10:34 [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion Hervé Poussineau
                   ` (2 preceding siblings ...)
  2012-01-23 10:34 ` [Qemu-devel] [PATCH 3/3] jazz-led: compile it only twice Hervé Poussineau
@ 2012-02-01 20:44 ` Anthony Liguori
  2012-02-01 22:28   ` Hervé Poussineau
  3 siblings, 1 reply; 6+ messages in thread
From: Anthony Liguori @ 2012-02-01 20:44 UTC (permalink / raw)
  To: Hervé Poussineau; +Cc: qemu-devel

On 01/23/2012 04:34 AM, Hervé Poussineau wrote:
> Following patches update jazz-led emulation to current Qemu standards:
> - use trace framework to report events
> - convert to qdev
>
> Hervé Poussineau (3):
>    jazz-led: use trace framework
>    jazz-led: convert to qdev
>    jazz-led: compile it only twice

This is going to need to be rebased.  I'd suggest waiting until next week when 
the next qom round goes in.  But if you resend before Friday, I'll make sure to 
take it in before I push in the next round of qom.

Regards,

Anthony Liguori

>
>   Makefile.objs                        |    1 +
>   Makefile.target                      |    1 -
>   default-configs/mips-softmmu.mak     |    1 +
>   default-configs/mips64-softmmu.mak   |    1 +
>   default-configs/mips64el-softmmu.mak |    1 +
>   default-configs/mipsel-softmmu.mak   |    1 +
>   hw/jazz_led.c                        |  171 ++++++++++++++--------------------
>   hw/mips.h                            |    3 -
>   hw/mips_jazz.c                       |    2 +-
>   trace-events                         |    4 +
>   10 files changed, 79 insertions(+), 107 deletions(-)
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion
  2012-02-01 20:44 ` [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion Anthony Liguori
@ 2012-02-01 22:28   ` Hervé Poussineau
  0 siblings, 0 replies; 6+ messages in thread
From: Hervé Poussineau @ 2012-02-01 22:28 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel

Anthony Liguori a écrit :
> On 01/23/2012 04:34 AM, Hervé Poussineau wrote:
>> Following patches update jazz-led emulation to current Qemu standards:
>> - use trace framework to report events
>> - convert to qdev
>> 
> This is going to need to be rebased.  I'd suggest waiting until next 
> week when the next qom round goes in.  But if you resend before Friday, 
> I'll make sure to take it in before I push in the next round of qom.
> 

Patchset rebased and sent to qemu ML.

Regards

Hervé

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-02-01 22:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-23 10:34 [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion Hervé Poussineau
2012-01-23 10:34 ` [Qemu-devel] [PATCH 1/3] jazz-led: use trace framework Hervé Poussineau
2012-01-23 10:34 ` [Qemu-devel] [PATCH 2/3] jazz-led: convert to qdev Hervé Poussineau
2012-01-23 10:34 ` [Qemu-devel] [PATCH 3/3] jazz-led: compile it only twice Hervé Poussineau
2012-02-01 20:44 ` [Qemu-devel] [PATCH 0/3] jazz-led: qdev conversion Anthony Liguori
2012-02-01 22:28   ` Hervé Poussineau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).