* [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion
@ 2011-10-25 10:32 Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 01/11] integratorcp: convert control to sysbus Benoît Canet
` (11 more replies)
0 siblings, 12 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
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.
This version fix a tab issue in "mst_fpga: convert to memory API".
Benoît Canet (11):
integratorcp: convert control to sysbus
marvell_88x8618_audio: convert to memory API
mst_fpga: convert to memory API
syborg_fb: convert to memory API
syborg_interrupt: convert to memory API
syborg_keyboard: convert to memory API
syborg_pointer: convert to memory API
syborg_rtc: convert to memory API
syborg_serial: convert to memory API
syborg_timer: convert to memory API
syborg_virtio: convert to memory API
hw/integratorcp.c | 20 +++++++++++++-------
hw/marvell_88w8618_audio.c | 28 +++++++++++-----------------
hw/mst_fpga.c | 29 ++++++++++++-----------------
hw/syborg_fb.c | 28 +++++++++++-----------------
hw/syborg_interrupt.c | 29 ++++++++++++-----------------
hw/syborg_keyboard.c | 28 +++++++++++-----------------
hw/syborg_pointer.c | 28 +++++++++++-----------------
hw/syborg_rtc.c | 28 +++++++++++-----------------
hw/syborg_serial.c | 28 +++++++++++-----------------
hw/syborg_timer.c | 27 ++++++++++-----------------
hw/syborg_virtio.c | 30 ++++++++++++++----------------
11 files changed, 127 insertions(+), 176 deletions(-)
--
1.7.5.4
^ permalink raw reply [flat|nested] 14+ messages in thread
* [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
* Re: [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion
2011-10-25 11:27 ` [Qemu-devel] [PATCH 00/11] V3 arm memory API conversion Avi Kivity
@ 2011-10-25 11:32 ` Peter Maydell
0 siblings, 0 replies; 14+ messages in thread
From: Peter Maydell @ 2011-10-25 11:32 UTC (permalink / raw)
To: Avi Kivity; +Cc: Benoît Canet, qemu-devel
2011/10/25 Avi Kivity <avi@redhat.com>:
> The integratorcp patch is also unrelated, it should also go through the
> integratorcp maintainer, if there is one.
That would be me, but I suggested feeding it through you because
it depends on the memoryregion patches which you haven't landed
yet.
-- PMM
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2011-10-25 11:32 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [Qemu-devel] [PATCH 03/11] mst_fpga: " Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 04/11] syborg_fb: " Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 05/11] syborg_interrupt: " Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 06/11] syborg_keyboard: " Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 07/11] syborg_pointer: " Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 08/11] syborg_rtc: " Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 09/11] syborg_serial: " Benoît Canet
2011-10-25 10:32 ` [Qemu-devel] [PATCH 10/11] syborg_timer: " 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
2011-10-25 11:32 ` Peter Maydell
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).