* [Qemu-devel] [PATCH] integratorcp: convert control to sysbus
@ 2011-10-19 11:14 Benoît Canet
2011-10-19 11:14 ` Benoît Canet
0 siblings, 1 reply; 6+ messages in thread
From: Benoît Canet @ 2011-10-19 11:14 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet
This patch convert the integratorcp control registers to sysbus.
Benoît Canet (1):
integratorcp: convert control to sysbus
hw/integratorcp.c | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
--
1.7.5.4
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH] integratorcp: convert control to sysbus
2011-10-19 11:14 Benoît Canet
@ 2011-10-19 11:14 ` Benoît Canet
2011-10-19 12:42 ` Peter Maydell
0 siblings, 1 reply; 6+ messages in thread
From: Benoît Canet @ 2011-10-19 11:14 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/integratorcp.c | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/hw/integratorcp.c b/hw/integratorcp.c
index 7f79560..70fedbe 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,15 @@ 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);
+ sysbus_init_mmio_region(dev, &s->iomem);
/* ??? Save/restore. */
+ return 0;
}
@@ -498,7 +503,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 +546,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] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] integratorcp: convert control to sysbus
2011-10-19 11:14 ` Benoît Canet
@ 2011-10-19 12:42 ` Peter Maydell
0 siblings, 0 replies; 6+ messages in thread
From: Peter Maydell @ 2011-10-19 12:42 UTC (permalink / raw)
To: Benoît Canet; +Cc: qemu-devel
2011/10/19 Benoît Canet <benoit.canet@gmail.com>:
> +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);
> + sysbus_init_mmio_region(dev, &s->iomem);
> /* ??? Save/restore. */
> + return 0;
> }
You should delete the "??? Save/restore" comment -- the
device currently has no state it needs to save/restore, and
now it's a sysbus device we have an easy path to add save/restore
if we do add state (ie we can at that point give it a vmstate).
Otherwise looks good.
-- PMM
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH V2] integratorcp: convert control to sysbus
@ 2011-10-19 12:56 Benoît Canet
2011-10-19 12:56 ` [Qemu-devel] [PATCH] " Benoît Canet
0 siblings, 1 reply; 6+ messages in thread
From: Benoît Canet @ 2011-10-19 12:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet
Convert control registers to sysbus.
This version get rid of an unneeded comment.
Benoît Canet (1):
integratorcp: convert control to sysbus
hw/integratorcp.c | 20 +++++++++++++-------
1 files changed, 13 insertions(+), 7 deletions(-)
--
1.7.5.4
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH] integratorcp: convert control to sysbus
2011-10-19 12:56 [Qemu-devel] [PATCH V2] integratorcp: convert control to sysbus Benoît Canet
@ 2011-10-19 12:56 ` Benoît Canet
2011-10-19 13:12 ` Peter Maydell
0 siblings, 1 reply; 6+ messages in thread
From: Benoît Canet @ 2011-10-19 12:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
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] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] integratorcp: convert control to sysbus
2011-10-19 12:56 ` [Qemu-devel] [PATCH] " Benoît Canet
@ 2011-10-19 13:12 ` Peter Maydell
0 siblings, 0 replies; 6+ messages in thread
From: Peter Maydell @ 2011-10-19 13:12 UTC (permalink / raw)
To: Benoît Canet; +Cc: qemu-devel, Avi Kivity
2011/10/19 Benoît Canet <benoit.canet@gmail.com>:
> Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Avi -- since this applies on top of the memory region
conversions in your queue, do you want to take this
patch too? Otherwise I'll just have to hold onto it
until you land those...
thanks
-- PMM
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-10-19 13:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-19 12:56 [Qemu-devel] [PATCH V2] integratorcp: convert control to sysbus Benoît Canet
2011-10-19 12:56 ` [Qemu-devel] [PATCH] " Benoît Canet
2011-10-19 13:12 ` Peter Maydell
-- strict thread matches above, loose matches on Subject: below --
2011-10-19 11:14 Benoît Canet
2011-10-19 11:14 ` Benoît Canet
2011-10-19 12:42 ` 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).