* [Qemu-devel] [PATCH 01/11] integratorcp: convert control to sysbus
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 02/11] marvell_88x8618_audio: convert to memory API Benoît Canet
` (10 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
---
hw/integratorcp.c | 20 +++++++++++++-------
1 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/hw/integratorcp.c b/hw/integratorcp.c
index 7f79560..7ad68b7 100644
--- a/hw/integratorcp.c
+++ b/hw/integratorcp.c
@@ -393,6 +393,11 @@ static int icp_pic_init(SysBusDevice *dev)
/* CP control registers. */
+typedef struct icp_control_state {
+ SysBusDevice busdev;
+ MemoryRegion iomem;
+} icp_control_state;
+
static uint64_t icp_control_read(void *opaque, target_phys_addr_t offset,
unsigned size)
{
@@ -431,15 +436,14 @@ static const MemoryRegionOps icp_control_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static void icp_control_init(target_phys_addr_t base)
+static int icp_control_init(SysBusDevice *dev)
{
- MemoryRegion *io;
+ icp_control_state *s = FROM_SYSBUS(icp_control_state, dev);
- io = (MemoryRegion *)g_malloc0(sizeof(MemoryRegion));
- memory_region_init_io(io, &icp_control_ops, NULL,
+ memory_region_init_io(&s->iomem, &icp_control_ops, s,
"control", 0x00800000);
- memory_region_add_subregion(get_system_memory(), base, io);
- /* ??? Save/restore. */
+ sysbus_init_mmio_region(dev, &s->iomem);
+ return 0;
}
@@ -498,7 +502,7 @@ static void integratorcp_init(ram_addr_t ram_size,
sysbus_create_simple("pl031", 0x15000000, pic[8]);
sysbus_create_simple("pl011", 0x16000000, pic[1]);
sysbus_create_simple("pl011", 0x17000000, pic[2]);
- icp_control_init(0xcb000000);
+ sysbus_create_simple("integrator_control", 0xcb000000, NULL);
sysbus_create_simple("pl050_keyboard", 0x18000000, pic[3]);
sysbus_create_simple("pl050_mouse", 0x19000000, pic[4]);
sysbus_create_varargs("pl181", 0x1c000000, pic[23], pic[24], NULL);
@@ -541,6 +545,8 @@ static SysBusDeviceInfo core_info = {
static void integratorcp_register_devices(void)
{
sysbus_register_dev("integrator_pic", sizeof(icp_pic_state), icp_pic_init);
+ sysbus_register_dev("integrator_control", sizeof(icp_control_state),
+ icp_control_init);
sysbus_register_withprop(&core_info);
}
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 02/11] marvell_88x8618_audio: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 01/11] integratorcp: convert control to sysbus Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 03/11] mst_fpga: " Benoît Canet
` (9 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/marvell_88w8618_audio.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/hw/marvell_88w8618_audio.c b/hw/marvell_88w8618_audio.c
index f8c5242..6982352 100644
--- a/hw/marvell_88w8618_audio.c
+++ b/hw/marvell_88w8618_audio.c
@@ -36,6 +36,7 @@
typedef struct mv88w8618_audio_state {
SysBusDevice busdev;
+ MemoryRegion iomem;
qemu_irq irq;
uint32_t playback_mode;
uint32_t status;
@@ -134,7 +135,8 @@ static void mv88w8618_audio_clock_update(mv88w8618_audio_state *s)
wm8750_set_bclk_in(s->wm, rate);
}
-static uint32_t mv88w8618_audio_read(void *opaque, target_phys_addr_t offset)
+static uint64_t mv88w8618_audio_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
mv88w8618_audio_state *s = opaque;
@@ -160,7 +162,7 @@ static uint32_t mv88w8618_audio_read(void *opaque, target_phys_addr_t offset)
}
static void mv88w8618_audio_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
mv88w8618_audio_state *s = opaque;
@@ -227,31 +229,23 @@ static void mv88w8618_audio_reset(DeviceState *d)
s->phys_buf = 0;
}
-static CPUReadMemoryFunc * const mv88w8618_audio_readfn[] = {
- mv88w8618_audio_read,
- mv88w8618_audio_read,
- mv88w8618_audio_read
-};
-
-static CPUWriteMemoryFunc * const mv88w8618_audio_writefn[] = {
- mv88w8618_audio_write,
- mv88w8618_audio_write,
- mv88w8618_audio_write
+static const MemoryRegionOps mv88w8618_audio_ops = {
+ .read = mv88w8618_audio_read,
+ .write = mv88w8618_audio_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static int mv88w8618_audio_init(SysBusDevice *dev)
{
mv88w8618_audio_state *s = FROM_SYSBUS(mv88w8618_audio_state, dev);
- int iomemtype;
sysbus_init_irq(dev, &s->irq);
wm8750_data_req_set(s->wm, mv88w8618_audio_callback, s);
- iomemtype = cpu_register_io_memory(mv88w8618_audio_readfn,
- mv88w8618_audio_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, MP_AUDIO_SIZE, iomemtype);
+ memory_region_init_io(&s->iomem, &mv88w8618_audio_ops, s,
+ "audio", MP_AUDIO_SIZE);
+ sysbus_init_mmio_region(dev, &s->iomem);
return 0;
}
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 03/11] mst_fpga: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 01/11] integratorcp: convert control to sysbus Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 02/11] marvell_88x8618_audio: convert to memory API Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 04/11] syborg_fb: " Benoît Canet
` (8 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/mst_fpga.c | 29 ++++++++++++-----------------
1 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/hw/mst_fpga.c b/hw/mst_fpga.c
index 7bcd5d7..e493e01 100644
--- a/hw/mst_fpga.c
+++ b/hw/mst_fpga.c
@@ -34,6 +34,7 @@
typedef struct mst_irq_state{
SysBusDevice busdev;
+ MemoryRegion iomem;
qemu_irq parent;
@@ -86,8 +87,8 @@ mst_fpga_set_irq(void *opaque, int irq, int level)
}
-static uint32_t
-mst_fpga_readb(void *opaque, target_phys_addr_t addr)
+static uint64_t
+mst_fpga_readb(void *opaque, target_phys_addr_t addr, unsigned size)
{
mst_irq_state *s = (mst_irq_state *) opaque;
@@ -124,7 +125,8 @@ mst_fpga_readb(void *opaque, target_phys_addr_t addr)
}
static void
-mst_fpga_writeb(void *opaque, target_phys_addr_t addr, uint32_t value)
+mst_fpga_writeb(void *opaque, target_phys_addr_t addr, uint64_t value,
+ unsigned size)
{
mst_irq_state *s = (mst_irq_state *) opaque;
value &= 0xffffffff;
@@ -175,17 +177,11 @@ mst_fpga_writeb(void *opaque, target_phys_addr_t addr, uint32_t value)
}
}
-static CPUReadMemoryFunc * const mst_fpga_readfn[] = {
- mst_fpga_readb,
- mst_fpga_readb,
- mst_fpga_readb,
+static const MemoryRegionOps mst_fpga_ops = {
+ .read = mst_fpga_readb,
+ .write = mst_fpga_writeb,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
-static CPUWriteMemoryFunc * const mst_fpga_writefn[] = {
- mst_fpga_writeb,
- mst_fpga_writeb,
- mst_fpga_writeb,
-};
-
static int mst_fpga_post_load(void *opaque, int version_id)
{
@@ -198,7 +194,6 @@ static int mst_fpga_post_load(void *opaque, int version_id)
static int mst_fpga_init(SysBusDevice *dev)
{
mst_irq_state *s;
- int iomemtype;
s = FROM_SYSBUS(mst_irq_state, dev);
@@ -210,9 +205,9 @@ static int mst_fpga_init(SysBusDevice *dev)
/* alloc the external 16 irqs */
qdev_init_gpio_in(&dev->qdev, mst_fpga_set_irq, MST_NUM_IRQS);
- iomemtype = cpu_register_io_memory(mst_fpga_readfn,
- mst_fpga_writefn, s, DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x00100000, iomemtype);
+ memory_region_init_io(&s->iomem, &mst_fpga_ops, s,
+ "fpga", 0x00100000);
+ sysbus_init_mmio_region(dev, &s->iomem);
return 0;
}
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 04/11] syborg_fb: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
` (2 preceding siblings ...)
2011-10-25 10:32 ` [Qemu-devel] [PATCH 03/11] mst_fpga: " Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 05/11] syborg_interrupt: " Benoît Canet
` (7 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/syborg_fb.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/hw/syborg_fb.c b/hw/syborg_fb.c
index ae3e0eb..3b71c72 100644
--- a/hw/syborg_fb.c
+++ b/hw/syborg_fb.c
@@ -65,6 +65,7 @@ enum {
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
DisplayState *ds;
/*QEMUConsole *console;*/
uint32_t need_update : 1;
@@ -294,7 +295,8 @@ static void syborg_fb_invalidate_display(void * opaque)
s->need_update = 1;
}
-static uint32_t syborg_fb_read(void *opaque, target_phys_addr_t offset)
+static uint64_t syborg_fb_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
SyborgFBState *s = opaque;
@@ -366,7 +368,7 @@ static uint32_t syborg_fb_read(void *opaque, target_phys_addr_t offset)
}
static void syborg_fb_write(void *opaque, target_phys_addr_t offset,
- uint32_t val)
+ uint64_t val, unsigned size)
{
SyborgFBState *s = opaque;
@@ -454,16 +456,10 @@ static void syborg_fb_write(void *opaque, target_phys_addr_t offset,
}
}
-static CPUReadMemoryFunc * const syborg_fb_readfn[] = {
- syborg_fb_read,
- syborg_fb_read,
- syborg_fb_read
-};
-
-static CPUWriteMemoryFunc * const syborg_fb_writefn[] = {
- syborg_fb_write,
- syborg_fb_write,
- syborg_fb_write
+static const MemoryRegionOps syborg_fb_ops = {
+ .read = syborg_fb_read,
+ .write = syborg_fb_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void syborg_fb_save(QEMUFile *f, void *opaque)
@@ -515,13 +511,11 @@ static int syborg_fb_load(QEMUFile *f, void *opaque, int version_id)
static int syborg_fb_init(SysBusDevice *dev)
{
SyborgFBState *s = FROM_SYSBUS(SyborgFBState, dev);
- int iomemtype;
sysbus_init_irq(dev, &s->irq);
- iomemtype = cpu_register_io_memory(syborg_fb_readfn,
- syborg_fb_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &syborg_fb_ops, s,
+ "framebuffer", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
s->ds = graphic_console_init(syborg_fb_update_display,
syborg_fb_invalidate_display,
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 05/11] syborg_interrupt: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
` (3 preceding siblings ...)
2011-10-25 10:32 ` [Qemu-devel] [PATCH 04/11] syborg_fb: " Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 06/11] syborg_keyboard: " Benoît Canet
` (6 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/syborg_interrupt.c | 29 ++++++++++++-----------------
1 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/hw/syborg_interrupt.c b/hw/syborg_interrupt.c
index 1b0f3bb..512910a 100644
--- a/hw/syborg_interrupt.c
+++ b/hw/syborg_interrupt.c
@@ -55,6 +55,7 @@ typedef struct {
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
int pending_count;
uint32_t num_irqs;
syborg_int_flags *flags;
@@ -84,7 +85,8 @@ static void syborg_int_set_irq(void *opaque, int irq, int level)
}
}
-static uint32_t syborg_int_read(void *opaque, target_phys_addr_t offset)
+static uint64_t syborg_int_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
SyborgIntState *s = (SyborgIntState *)opaque;
int i;
@@ -114,7 +116,8 @@ static uint32_t syborg_int_read(void *opaque, target_phys_addr_t offset)
}
}
-static void syborg_int_write(void *opaque, target_phys_addr_t offset, uint32_t value)
+static void syborg_int_write(void *opaque, target_phys_addr_t offset,
+ uint64_t value, unsigned size)
{
SyborgIntState *s = (SyborgIntState *)opaque;
int i;
@@ -156,16 +159,10 @@ static void syborg_int_write(void *opaque, target_phys_addr_t offset, uint32_t v
syborg_int_update(s);
}
-static CPUReadMemoryFunc * const syborg_int_readfn[] = {
- syborg_int_read,
- syborg_int_read,
- syborg_int_read
-};
-
-static CPUWriteMemoryFunc * const syborg_int_writefn[] = {
- syborg_int_write,
- syborg_int_write,
- syborg_int_write
+static const MemoryRegionOps syborg_int_ops = {
+ .read = syborg_int_read,
+ .write = syborg_int_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void syborg_int_save(QEMUFile *f, void *opaque)
@@ -205,14 +202,12 @@ static int syborg_int_load(QEMUFile *f, void *opaque, int version_id)
static int syborg_int_init(SysBusDevice *dev)
{
SyborgIntState *s = FROM_SYSBUS(SyborgIntState, dev);
- int iomemtype;
sysbus_init_irq(dev, &s->parent_irq);
qdev_init_gpio_in(&dev->qdev, syborg_int_set_irq, s->num_irqs);
- iomemtype = cpu_register_io_memory(syborg_int_readfn,
- syborg_int_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &syborg_int_ops, s,
+ "interrupt", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
s->flags = g_malloc0(s->num_irqs * sizeof(syborg_int_flags));
register_savevm(&dev->qdev, "syborg_int", -1, 1, syborg_int_save,
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 06/11] syborg_keyboard: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
` (4 preceding siblings ...)
2011-10-25 10:32 ` [Qemu-devel] [PATCH 05/11] syborg_interrupt: " Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 07/11] syborg_pointer: " Benoît Canet
` (5 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/syborg_keyboard.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/hw/syborg_keyboard.c b/hw/syborg_keyboard.c
index 82b9dc0..03d2183 100644
--- a/hw/syborg_keyboard.c
+++ b/hw/syborg_keyboard.c
@@ -51,6 +51,7 @@ enum {
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
uint32_t int_enabled;
int extension_bit;
uint32_t fifo_size;
@@ -66,7 +67,8 @@ static void syborg_keyboard_update(SyborgKeyboardState *s)
qemu_set_irq(s->irq, level);
}
-static uint32_t syborg_keyboard_read(void *opaque, target_phys_addr_t offset)
+static uint64_t syborg_keyboard_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
SyborgKeyboardState *s = (SyborgKeyboardState *)opaque;
int c;
@@ -104,7 +106,7 @@ static uint32_t syborg_keyboard_read(void *opaque, target_phys_addr_t offset)
}
static void syborg_keyboard_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
SyborgKeyboardState *s = (SyborgKeyboardState *)opaque;
@@ -121,16 +123,10 @@ static void syborg_keyboard_write(void *opaque, target_phys_addr_t offset,
}
}
-static CPUReadMemoryFunc * const syborg_keyboard_readfn[] = {
- syborg_keyboard_read,
- syborg_keyboard_read,
- syborg_keyboard_read
-};
-
-static CPUWriteMemoryFunc * const syborg_keyboard_writefn[] = {
- syborg_keyboard_write,
- syborg_keyboard_write,
- syborg_keyboard_write
+static const MemoryRegionOps syborg_keyboard_ops = {
+ .read = syborg_keyboard_read,
+ .write = syborg_keyboard_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void syborg_keyboard_event(void *opaque, int keycode)
@@ -184,13 +180,11 @@ static const VMStateDescription vmstate_syborg_keyboard = {
static int syborg_keyboard_init(SysBusDevice *dev)
{
SyborgKeyboardState *s = FROM_SYSBUS(SyborgKeyboardState, dev);
- int iomemtype;
sysbus_init_irq(dev, &s->irq);
- iomemtype = cpu_register_io_memory(syborg_keyboard_readfn,
- syborg_keyboard_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &syborg_keyboard_ops, s,
+ "keyboard", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
if (s->fifo_size <= 0) {
fprintf(stderr, "syborg_keyboard: fifo too small\n");
s->fifo_size = 16;
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 07/11] syborg_pointer: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
` (5 preceding siblings ...)
2011-10-25 10:32 ` [Qemu-devel] [PATCH 06/11] syborg_keyboard: " Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 08/11] syborg_rtc: " Benoît Canet
` (4 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/syborg_pointer.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/hw/syborg_pointer.c b/hw/syborg_pointer.c
index b91214d..a0f8b32 100644
--- a/hw/syborg_pointer.c
+++ b/hw/syborg_pointer.c
@@ -44,6 +44,7 @@ typedef struct {
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
int int_enabled;
uint32_t fifo_size;
event_data *event_fifo;
@@ -57,7 +58,8 @@ static void syborg_pointer_update(SyborgPointerState *s)
qemu_set_irq(s->irq, s->read_count && s->int_enabled);
}
-static uint32_t syborg_pointer_read(void *opaque, target_phys_addr_t offset)
+static uint64_t syborg_pointer_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
SyborgPointerState *s = (SyborgPointerState *)opaque;
@@ -87,7 +89,7 @@ static uint32_t syborg_pointer_read(void *opaque, target_phys_addr_t offset)
}
static void syborg_pointer_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
SyborgPointerState *s = (SyborgPointerState *)opaque;
@@ -110,16 +112,10 @@ static void syborg_pointer_write(void *opaque, target_phys_addr_t offset,
syborg_pointer_update(s);
}
-static CPUReadMemoryFunc * const syborg_pointer_readfn[] = {
- syborg_pointer_read,
- syborg_pointer_read,
- syborg_pointer_read
-};
-
-static CPUWriteMemoryFunc * const syborg_pointer_writefn[] = {
- syborg_pointer_write,
- syborg_pointer_write,
- syborg_pointer_write
+static const MemoryRegionOps syborg_pointer_ops = {
+ .read = syborg_pointer_read,
+ .write = syborg_pointer_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void syborg_pointer_event(void *opaque, int dx, int dy, int dz,
@@ -186,13 +182,11 @@ static const VMStateDescription vmstate_syborg_pointer = {
static int syborg_pointer_init(SysBusDevice *dev)
{
SyborgPointerState *s = FROM_SYSBUS(SyborgPointerState, dev);
- int iomemtype;
sysbus_init_irq(dev, &s->irq);
- iomemtype = cpu_register_io_memory(syborg_pointer_readfn,
- syborg_pointer_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &syborg_pointer_ops, s,
+ "pointer", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
if (s->fifo_size <= 0) {
fprintf(stderr, "syborg_pointer: fifo too small\n");
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 08/11] syborg_rtc: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
` (6 preceding siblings ...)
2011-10-25 10:32 ` [Qemu-devel] [PATCH 07/11] syborg_pointer: " Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 09/11] syborg_serial: " Benoît Canet
` (3 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/syborg_rtc.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/hw/syborg_rtc.c b/hw/syborg_rtc.c
index 69f6ccf..375664f 100644
--- a/hw/syborg_rtc.c
+++ b/hw/syborg_rtc.c
@@ -35,12 +35,14 @@ enum {
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
int64_t offset;
int64_t data;
qemu_irq irq;
} SyborgRTCState;
-static uint32_t syborg_rtc_read(void *opaque, target_phys_addr_t offset)
+static uint64_t syborg_rtc_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
SyborgRTCState *s = (SyborgRTCState *)opaque;
offset &= 0xfff;
@@ -58,7 +60,8 @@ static uint32_t syborg_rtc_read(void *opaque, target_phys_addr_t offset)
}
}
-static void syborg_rtc_write(void *opaque, target_phys_addr_t offset, uint32_t value)
+static void syborg_rtc_write(void *opaque, target_phys_addr_t offset,
+ uint64_t value, unsigned size)
{
SyborgRTCState *s = (SyborgRTCState *)opaque;
uint64_t now;
@@ -90,16 +93,10 @@ static void syborg_rtc_write(void *opaque, target_phys_addr_t offset, uint32_t v
}
}
-static CPUReadMemoryFunc * const syborg_rtc_readfn[] = {
- syborg_rtc_read,
- syborg_rtc_read,
- syborg_rtc_read
-};
-
-static CPUWriteMemoryFunc * const syborg_rtc_writefn[] = {
- syborg_rtc_write,
- syborg_rtc_write,
- syborg_rtc_write
+static const MemoryRegionOps syborg_rtc_ops = {
+ .read = syborg_rtc_read,
+ .write = syborg_rtc_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static const VMStateDescription vmstate_syborg_rtc = {
@@ -118,12 +115,9 @@ static int syborg_rtc_init(SysBusDevice *dev)
{
SyborgRTCState *s = FROM_SYSBUS(SyborgRTCState, dev);
struct tm tm;
- int iomemtype;
- iomemtype = cpu_register_io_memory(syborg_rtc_readfn,
- syborg_rtc_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &syborg_rtc_ops, s, "rtc", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
qemu_get_timedate(&tm, 0);
s->offset = (uint64_t)mktime(&tm) * 1000000000;
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 09/11] syborg_serial: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
` (7 preceding siblings ...)
2011-10-25 10:32 ` [Qemu-devel] [PATCH 08/11] syborg_rtc: " Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 10/11] syborg_timer: " Benoît Canet
` (2 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/syborg_serial.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/hw/syborg_serial.c b/hw/syborg_serial.c
index c83f82c..b73a009 100644
--- a/hw/syborg_serial.c
+++ b/hw/syborg_serial.c
@@ -58,6 +58,7 @@ enum {
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
uint32_t int_enable;
uint32_t fifo_size;
uint32_t *read_fifo;
@@ -152,7 +153,8 @@ static void dma_rx_start(SyborgSerialState *s, uint32_t len)
syborg_serial_update(s);
}
-static uint32_t syborg_serial_read(void *opaque, target_phys_addr_t offset)
+static uint64_t syborg_serial_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
SyborgSerialState *s = (SyborgSerialState *)opaque;
uint32_t c;
@@ -192,7 +194,7 @@ static uint32_t syborg_serial_read(void *opaque, target_phys_addr_t offset)
}
static void syborg_serial_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
SyborgSerialState *s = (SyborgSerialState *)opaque;
unsigned char ch;
@@ -261,16 +263,10 @@ static void syborg_serial_event(void *opaque, int event)
/* TODO: Report BREAK events? */
}
-static CPUReadMemoryFunc * const syborg_serial_readfn[] = {
- syborg_serial_read,
- syborg_serial_read,
- syborg_serial_read
-};
-
-static CPUWriteMemoryFunc * const syborg_serial_writefn[] = {
- syborg_serial_write,
- syborg_serial_write,
- syborg_serial_write
+static const MemoryRegionOps syborg_serial_ops = {
+ .read = syborg_serial_read,
+ .write = syborg_serial_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static const VMStateDescription vmstate_syborg_serial = {
@@ -295,13 +291,11 @@ static const VMStateDescription vmstate_syborg_serial = {
static int syborg_serial_init(SysBusDevice *dev)
{
SyborgSerialState *s = FROM_SYSBUS(SyborgSerialState, dev);
- int iomemtype;
sysbus_init_irq(dev, &s->irq);
- iomemtype = cpu_register_io_memory(syborg_serial_readfn,
- syborg_serial_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &syborg_serial_ops, s,
+ "serial", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
s->chr = qdev_init_chardev(&dev->qdev);
if (s->chr) {
qemu_chr_add_handlers(s->chr, syborg_serial_can_receive,
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 10/11] syborg_timer: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
` (8 preceding siblings ...)
2011-10-25 10:32 ` [Qemu-devel] [PATCH 09/11] syborg_serial: " Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 11/11] syborg_virtio: " Benoît Canet
2011-10-25 11:27 ` [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Avi Kivity
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/syborg_timer.c | 27 ++++++++++-----------------
1 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/hw/syborg_timer.c b/hw/syborg_timer.c
index 50c813e..dfee457 100644
--- a/hw/syborg_timer.c
+++ b/hw/syborg_timer.c
@@ -53,6 +53,7 @@ enum {
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
ptimer_state *timer;
int running;
int oneshot;
@@ -83,7 +84,8 @@ static void syborg_timer_tick(void *opaque)
syborg_timer_update(s);
}
-static uint32_t syborg_timer_read(void *opaque, target_phys_addr_t offset)
+static uint64_t syborg_timer_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
SyborgTimerState *s = (SyborgTimerState *)opaque;
@@ -114,7 +116,7 @@ static uint32_t syborg_timer_read(void *opaque, target_phys_addr_t offset)
}
static void syborg_timer_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
SyborgTimerState *s = (SyborgTimerState *)opaque;
@@ -162,16 +164,10 @@ static void syborg_timer_write(void *opaque, target_phys_addr_t offset,
}
}
-static CPUReadMemoryFunc * const syborg_timer_readfn[] = {
- syborg_timer_read,
- syborg_timer_read,
- syborg_timer_read
-};
-
-static CPUWriteMemoryFunc * const syborg_timer_writefn[] = {
- syborg_timer_write,
- syborg_timer_write,
- syborg_timer_write
+static const MemoryRegionOps syborg_timer_ops = {
+ .read = syborg_timer_read,
+ .write = syborg_timer_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static const VMStateDescription vmstate_syborg_timer = {
@@ -194,17 +190,14 @@ static int syborg_timer_init(SysBusDevice *dev)
{
SyborgTimerState *s = FROM_SYSBUS(SyborgTimerState, dev);
QEMUBH *bh;
- int iomemtype;
if (s->freq == 0) {
fprintf(stderr, "syborg_timer: Zero/unset frequency\n");
exit(1);
}
sysbus_init_irq(dev, &s->irq);
- iomemtype = cpu_register_io_memory(syborg_timer_readfn,
- syborg_timer_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &syborg_timer_ops, s, "timer", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
bh = qemu_bh_new(syborg_timer_tick, s);
s->timer = ptimer_init(bh);
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 11/11] syborg_virtio: convert to memory API
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
` (9 preceding siblings ...)
2011-10-25 10:32 ` [Qemu-devel] [PATCH 10/11] syborg_timer: " Benoît Canet
@ 2011-10-25 10:32 ` Benoît Canet
2011-10-25 11:27 ` [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Avi Kivity
11 siblings, 0 replies; 14+ messages in thread
From: Benoît Canet @ 2011-10-25 10:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/syborg_virtio.c | 30 ++++++++++++++----------------
1 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/hw/syborg_virtio.c b/hw/syborg_virtio.c
index 00c7be8..c2dbf36 100644
--- a/hw/syborg_virtio.c
+++ b/hw/syborg_virtio.c
@@ -62,6 +62,7 @@ enum {
typedef struct {
SysBusDevice busdev;
VirtIODevice *vdev;
+ MemoryRegion iomem;
qemu_irq irq;
uint32_t int_enable;
uint32_t id;
@@ -223,16 +224,16 @@ static void syborg_virtio_writeb(void *opaque, target_phys_addr_t offset,
BADF("Bad byte write offset 0x%x\n", (int)offset);
}
-static CPUReadMemoryFunc * const syborg_virtio_readfn[] = {
- syborg_virtio_readb,
- syborg_virtio_readw,
- syborg_virtio_readl
-};
-
-static CPUWriteMemoryFunc * const syborg_virtio_writefn[] = {
- syborg_virtio_writeb,
- syborg_virtio_writew,
- syborg_virtio_writel
+static const MemoryRegionOps syborg_virtio_ops = {
+ .old_mmio = {
+ .read = { syborg_virtio_readb,
+ syborg_virtio_readw,
+ syborg_virtio_readl },
+ .write = { syborg_virtio_writeb,
+ syborg_virtio_writew,
+ syborg_virtio_writel },
+ },
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void syborg_virtio_update_irq(void *opaque, uint16_t vector)
@@ -258,17 +259,14 @@ static VirtIOBindings syborg_virtio_bindings = {
static int syborg_virtio_init(SyborgVirtIOProxy *proxy, VirtIODevice *vdev)
{
- int iomemtype;
-
proxy->vdev = vdev;
/* Don't support multiple vectors */
proxy->vdev->nvectors = 0;
sysbus_init_irq(&proxy->busdev, &proxy->irq);
- iomemtype = cpu_register_io_memory(syborg_virtio_readfn,
- syborg_virtio_writefn, proxy,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(&proxy->busdev, 0x1000, iomemtype);
+ memory_region_init_io(&proxy->iomem, &syborg_virtio_ops, proxy,
+ "virtio", 0x1000);
+ sysbus_init_mmio_region(&proxy->busdev, &proxy->iomem);
proxy->id = ((uint32_t)0x1af4 << 16) | vdev->device_id;
--
1.7.5.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion
2011-10-25 10:32 [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Benoît Canet
` (10 preceding siblings ...)
2011-10-25 10:32 ` [Qemu-devel] [PATCH 11/11] syborg_virtio: " Benoît Canet
@ 2011-10-25 11:27 ` Avi Kivity
2011-10-25 11:32 ` Peter Maydell
11 siblings, 1 reply; 14+ messages in thread
From: Avi Kivity @ 2011-10-25 11:27 UTC (permalink / raw)
To: Benoît Canet; +Cc: peter.maydell, qemu-devel
On 10/25/2011 12:32 PM, Benoît Canet wrote:
> These patches apply against akivity memory/master.
> They convert some ARM files to memory API.
>
> Omap boards where not modified because Linaro is
> currently refactoring them.
>
> Xscale was left apart too.
>
> "integratorcp: convert control to sysbus" is a lone reviewed by patch
> which was added at the begining of the serie to tracking and applying.
>
> Unrelated patches where dropped and will be reposted with the right
> maintainer in CC.
>
The integratorcp patch is also unrelated, it should also go through the
integratorcp maintainer, if there is one. I applied the rest (actually
from v2 - patch 3 with mixed tabs/4-space indents look horrible - sorry
about the extra unneeded work). I'll queue them shortly for merge.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
^ permalink raw reply [flat|nested] 14+ messages in thread