* [Qemu-devel] [PATCH 01/10] pxa2xx_gpio: convert to memory API
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 02/10] pxa2xx_pcmcia.c: convert common memory space " Benoît Canet
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_gpio.c | 29 +++++++++++------------------
1 files changed, 11 insertions(+), 18 deletions(-)
diff --git a/hw/pxa2xx_gpio.c b/hw/pxa2xx_gpio.c
index 200b0cf..f7464fe 100644
--- a/hw/pxa2xx_gpio.c
+++ b/hw/pxa2xx_gpio.c
@@ -16,6 +16,7 @@
typedef struct PXA2xxGPIOInfo PXA2xxGPIOInfo;
struct PXA2xxGPIOInfo {
SysBusDevice busdev;
+ MemoryRegion iomem;
qemu_irq irq0, irq1, irqX;
int lines;
int ncpu;
@@ -137,7 +138,8 @@ static void pxa2xx_gpio_handler_update(PXA2xxGPIOInfo *s) {
}
}
-static uint32_t pxa2xx_gpio_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pxa2xx_gpio_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
PXA2xxGPIOInfo *s = (PXA2xxGPIOInfo *) opaque;
uint32_t ret;
@@ -188,8 +190,8 @@ static uint32_t pxa2xx_gpio_read(void *opaque, target_phys_addr_t offset)
return 0;
}
-static void pxa2xx_gpio_write(void *opaque,
- target_phys_addr_t offset, uint32_t value)
+static void pxa2xx_gpio_write(void *opaque, target_phys_addr_t offset,
+ uint64_t value, unsigned size)
{
PXA2xxGPIOInfo *s = (PXA2xxGPIOInfo *) opaque;
int bank;
@@ -240,16 +242,10 @@ static void pxa2xx_gpio_write(void *opaque,
}
}
-static CPUReadMemoryFunc * const pxa2xx_gpio_readfn[] = {
- pxa2xx_gpio_read,
- pxa2xx_gpio_read,
- pxa2xx_gpio_read
-};
-
-static CPUWriteMemoryFunc * const pxa2xx_gpio_writefn[] = {
- pxa2xx_gpio_write,
- pxa2xx_gpio_write,
- pxa2xx_gpio_write
+static const MemoryRegionOps pxa_gpio_ops = {
+ .read = pxa2xx_gpio_read,
+ .write = pxa2xx_gpio_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
DeviceState *pxa2xx_gpio_init(target_phys_addr_t base,
@@ -275,7 +271,6 @@ DeviceState *pxa2xx_gpio_init(target_phys_addr_t base,
static int pxa2xx_gpio_initfn(SysBusDevice *dev)
{
- int iomemtype;
PXA2xxGPIOInfo *s;
s = FROM_SYSBUS(PXA2xxGPIOInfo, dev);
@@ -285,10 +280,8 @@ static int pxa2xx_gpio_initfn(SysBusDevice *dev)
qdev_init_gpio_in(&dev->qdev, pxa2xx_gpio_set, s->lines);
qdev_init_gpio_out(&dev->qdev, s->handler, s->lines);
- iomemtype = cpu_register_io_memory(pxa2xx_gpio_readfn,
- pxa2xx_gpio_writefn, s, DEVICE_NATIVE_ENDIAN);
-
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &pxa_gpio_ops, s, "gpio", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq0);
sysbus_init_irq(dev, &s->irq1);
sysbus_init_irq(dev, &s->irqX);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 02/10] pxa2xx_pcmcia.c: convert common memory space to memory API
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 01/10] pxa2xx_gpio: convert to memory API Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 03/10] pxa2xx_pcmcia.c: convert attribute " Benoît Canet
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_pcmcia.c | 31 ++++++++++++++-----------------
1 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/hw/pxa2xx_pcmcia.c b/hw/pxa2xx_pcmcia.c
index 74c6817..51ed72a 100644
--- a/hw/pxa2xx_pcmcia.c
+++ b/hw/pxa2xx_pcmcia.c
@@ -10,17 +10,19 @@
#include "hw.h"
#include "pcmcia.h"
#include "pxa.h"
+#include "exec-memory.h"
struct PXA2xxPCMCIAState {
PCMCIASocket slot;
PCMCIACardState *card;
+ MemoryRegion common_iomem;
qemu_irq irq;
qemu_irq cd_irq;
};
-static uint32_t pxa2xx_pcmcia_common_read(void *opaque,
- target_phys_addr_t offset)
+static uint64_t pxa2xx_pcmcia_common_read(void *opaque,
+ target_phys_addr_t offset, unsigned size)
{
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
@@ -31,8 +33,8 @@ static uint32_t pxa2xx_pcmcia_common_read(void *opaque,
return 0;
}
-static void pxa2xx_pcmcia_common_write(void *opaque,
- target_phys_addr_t offset, uint32_t value)
+static void pxa2xx_pcmcia_common_write(void *opaque, target_phys_addr_t offset,
+ uint64_t value, unsigned size)
{
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
@@ -85,16 +87,10 @@ static void pxa2xx_pcmcia_io_write(void *opaque,
}
}
-static CPUReadMemoryFunc * const pxa2xx_pcmcia_common_readfn[] = {
- pxa2xx_pcmcia_common_read,
- pxa2xx_pcmcia_common_read,
- pxa2xx_pcmcia_common_read,
-};
-
-static CPUWriteMemoryFunc * const pxa2xx_pcmcia_common_writefn[] = {
- pxa2xx_pcmcia_common_write,
- pxa2xx_pcmcia_common_write,
- pxa2xx_pcmcia_common_write,
+static const MemoryRegionOps pxa2xx_pcmcia_common_ops = {
+ .read = pxa2xx_pcmcia_common_read,
+ .write = pxa2xx_pcmcia_common_write,
+ .endianness = DEVICE_NATIVE_ENDIAN
};
static CPUReadMemoryFunc * const pxa2xx_pcmcia_attr_readfn[] = {
@@ -151,9 +147,10 @@ PXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base)
cpu_register_physical_memory(base | 0x08000000, 0x04000000, iomemtype);
/* Socket Common Memory Space */
- iomemtype = cpu_register_io_memory(pxa2xx_pcmcia_common_readfn,
- pxa2xx_pcmcia_common_writefn, s, DEVICE_NATIVE_ENDIAN);
- cpu_register_physical_memory(base | 0x0c000000, 0x04000000, iomemtype);
+ memory_region_init_io(&s->common_iomem, &pxa2xx_pcmcia_common_ops, s,
+ "pcmcia_common", 0x04000000);
+ memory_region_add_subregion(get_system_memory(), base | 0x0c000000,
+ &s->common_iomem);
if (base == 0x30000000)
s->slot.slot_string = "PXA PC Card Socket 1";
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 03/10] pxa2xx_pcmcia.c: convert attribute memory space to memory API
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 01/10] pxa2xx_gpio: convert to memory API Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 02/10] pxa2xx_pcmcia.c: convert common memory space " Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 04/10] pxa2xx_pcmcia.c: convert io " Benoît Canet
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_pcmcia.c | 31 ++++++++++++++-----------------
1 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/hw/pxa2xx_pcmcia.c b/hw/pxa2xx_pcmcia.c
index 51ed72a..94811fc 100644
--- a/hw/pxa2xx_pcmcia.c
+++ b/hw/pxa2xx_pcmcia.c
@@ -12,10 +12,12 @@
#include "pxa.h"
#include "exec-memory.h"
+
struct PXA2xxPCMCIAState {
PCMCIASocket slot;
PCMCIACardState *card;
MemoryRegion common_iomem;
+ MemoryRegion attr_iomem;
qemu_irq irq;
qemu_irq cd_irq;
@@ -43,8 +45,8 @@ static void pxa2xx_pcmcia_common_write(void *opaque, target_phys_addr_t offset,
}
}
-static uint32_t pxa2xx_pcmcia_attr_read(void *opaque,
- target_phys_addr_t offset)
+static uint64_t pxa2xx_pcmcia_attr_read(void *opaque,
+ target_phys_addr_t offset, unsigned size)
{
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
@@ -55,8 +57,8 @@ static uint32_t pxa2xx_pcmcia_attr_read(void *opaque,
return 0;
}
-static void pxa2xx_pcmcia_attr_write(void *opaque,
- target_phys_addr_t offset, uint32_t value)
+static void pxa2xx_pcmcia_attr_write(void *opaque, target_phys_addr_t offset,
+ uint64_t value, unsigned size)
{
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
@@ -93,16 +95,10 @@ static const MemoryRegionOps pxa2xx_pcmcia_common_ops = {
.endianness = DEVICE_NATIVE_ENDIAN
};
-static CPUReadMemoryFunc * const pxa2xx_pcmcia_attr_readfn[] = {
- pxa2xx_pcmcia_attr_read,
- pxa2xx_pcmcia_attr_read,
- pxa2xx_pcmcia_attr_read,
-};
-
-static CPUWriteMemoryFunc * const pxa2xx_pcmcia_attr_writefn[] = {
- pxa2xx_pcmcia_attr_write,
- pxa2xx_pcmcia_attr_write,
- pxa2xx_pcmcia_attr_write,
+static const MemoryRegionOps pxa2xx_pcmcia_attr_ops = {
+ .read = pxa2xx_pcmcia_attr_read,
+ .write = pxa2xx_pcmcia_attr_write,
+ .endianness = DEVICE_NATIVE_ENDIAN
};
static CPUReadMemoryFunc * const pxa2xx_pcmcia_io_readfn[] = {
@@ -142,9 +138,10 @@ PXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base)
/* Then next 64 MB is reserved */
/* Socket Attribute Memory Space */
- iomemtype = cpu_register_io_memory(pxa2xx_pcmcia_attr_readfn,
- pxa2xx_pcmcia_attr_writefn, s, DEVICE_NATIVE_ENDIAN);
- cpu_register_physical_memory(base | 0x08000000, 0x04000000, iomemtype);
+ memory_region_init_io(&s->attr_iomem, &pxa2xx_pcmcia_attr_ops, s,
+ "pcmcia_attribute", 0x04000000);
+ memory_region_add_subregion(get_system_memory(), base | 0x08000000,
+ &s->attr_iomem);
/* Socket Common Memory Space */
memory_region_init_io(&s->common_iomem, &pxa2xx_pcmcia_common_ops, s,
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 04/10] pxa2xx_pcmcia.c: convert io memory space to memory API
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
` (2 preceding siblings ...)
2011-10-26 14:56 ` [Qemu-devel] [PATCH 03/10] pxa2xx_pcmcia.c: convert attribute " Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 05/10] pxa2xx_pcmcia.c: merge calls to get_system_memory() Benoît Canet
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_pcmcia.c | 31 +++++++++++++------------------
1 files changed, 13 insertions(+), 18 deletions(-)
diff --git a/hw/pxa2xx_pcmcia.c b/hw/pxa2xx_pcmcia.c
index 94811fc..f428bd1 100644
--- a/hw/pxa2xx_pcmcia.c
+++ b/hw/pxa2xx_pcmcia.c
@@ -18,6 +18,7 @@ struct PXA2xxPCMCIAState {
PCMCIACardState *card;
MemoryRegion common_iomem;
MemoryRegion attr_iomem;
+ MemoryRegion iomem;
qemu_irq irq;
qemu_irq cd_irq;
@@ -67,8 +68,8 @@ static void pxa2xx_pcmcia_attr_write(void *opaque, target_phys_addr_t offset,
}
}
-static uint32_t pxa2xx_pcmcia_io_read(void *opaque,
- target_phys_addr_t offset)
+static uint64_t pxa2xx_pcmcia_io_read(void *opaque,
+ target_phys_addr_t offset, unsigned size)
{
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
@@ -79,8 +80,8 @@ static uint32_t pxa2xx_pcmcia_io_read(void *opaque,
return 0;
}
-static void pxa2xx_pcmcia_io_write(void *opaque,
- target_phys_addr_t offset, uint32_t value)
+static void pxa2xx_pcmcia_io_write(void *opaque, target_phys_addr_t offset,
+ uint64_t value, unsigned size)
{
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
@@ -101,16 +102,10 @@ static const MemoryRegionOps pxa2xx_pcmcia_attr_ops = {
.endianness = DEVICE_NATIVE_ENDIAN
};
-static CPUReadMemoryFunc * const pxa2xx_pcmcia_io_readfn[] = {
- pxa2xx_pcmcia_io_read,
- pxa2xx_pcmcia_io_read,
- pxa2xx_pcmcia_io_read,
-};
-
-static CPUWriteMemoryFunc * const pxa2xx_pcmcia_io_writefn[] = {
- pxa2xx_pcmcia_io_write,
- pxa2xx_pcmcia_io_write,
- pxa2xx_pcmcia_io_write,
+static const MemoryRegionOps pxa2xx_pcmcia_io_ops = {
+ .read = pxa2xx_pcmcia_io_read,
+ .write = pxa2xx_pcmcia_io_write,
+ .endianness = DEVICE_NATIVE_ENDIAN
};
static void pxa2xx_pcmcia_set_irq(void *opaque, int line, int level)
@@ -124,16 +119,16 @@ static void pxa2xx_pcmcia_set_irq(void *opaque, int line, int level)
PXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base)
{
- int iomemtype;
PXA2xxPCMCIAState *s;
s = (PXA2xxPCMCIAState *)
g_malloc0(sizeof(PXA2xxPCMCIAState));
/* Socket I/O Memory Space */
- iomemtype = cpu_register_io_memory(pxa2xx_pcmcia_io_readfn,
- pxa2xx_pcmcia_io_writefn, s, DEVICE_NATIVE_ENDIAN);
- cpu_register_physical_memory(base | 0x00000000, 0x04000000, iomemtype);
+ memory_region_init_io(&s->iomem, &pxa2xx_pcmcia_io_ops, s,
+ "pcmcia_io", 0x04000000);
+ memory_region_add_subregion(get_system_memory(), base | 0x00000000,
+ &s->iomem);
/* Then next 64 MB is reserved */
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 05/10] pxa2xx_pcmcia.c: merge calls to get_system_memory()
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
` (3 preceding siblings ...)
2011-10-26 14:56 ` [Qemu-devel] [PATCH 04/10] pxa2xx_pcmcia.c: convert io " Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 06/10] pxa2xx_keypad: convert to memory API Benoît Canet
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_pcmcia.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/hw/pxa2xx_pcmcia.c b/hw/pxa2xx_pcmcia.c
index f428bd1..8538cca 100644
--- a/hw/pxa2xx_pcmcia.c
+++ b/hw/pxa2xx_pcmcia.c
@@ -120,6 +120,7 @@ static void pxa2xx_pcmcia_set_irq(void *opaque, int line, int level)
PXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base)
{
PXA2xxPCMCIAState *s;
+ MemoryRegion *system_memory = get_system_memory();
s = (PXA2xxPCMCIAState *)
g_malloc0(sizeof(PXA2xxPCMCIAState));
@@ -127,7 +128,7 @@ PXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base)
/* Socket I/O Memory Space */
memory_region_init_io(&s->iomem, &pxa2xx_pcmcia_io_ops, s,
"pcmcia_io", 0x04000000);
- memory_region_add_subregion(get_system_memory(), base | 0x00000000,
+ memory_region_add_subregion(system_memory, base | 0x00000000,
&s->iomem);
/* Then next 64 MB is reserved */
@@ -135,13 +136,13 @@ PXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base)
/* Socket Attribute Memory Space */
memory_region_init_io(&s->attr_iomem, &pxa2xx_pcmcia_attr_ops, s,
"pcmcia_attribute", 0x04000000);
- memory_region_add_subregion(get_system_memory(), base | 0x08000000,
+ memory_region_add_subregion(system_memory, base | 0x08000000,
&s->attr_iomem);
/* Socket Common Memory Space */
memory_region_init_io(&s->common_iomem, &pxa2xx_pcmcia_common_ops, s,
"pcmcia_common", 0x04000000);
- memory_region_add_subregion(get_system_memory(), base | 0x0c000000,
+ memory_region_add_subregion(system_memory, base | 0x0c000000,
&s->common_iomem);
if (base == 0x30000000)
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 06/10] pxa2xx_keypad: convert to memory API
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
` (4 preceding siblings ...)
2011-10-26 14:56 ` [Qemu-devel] [PATCH 05/10] pxa2xx_pcmcia.c: merge calls to get_system_memory() Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 07/10] pxa2xx_timer: " Benoît Canet
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_keypad.c | 30 +++++++++++++-----------------
1 files changed, 13 insertions(+), 17 deletions(-)
diff --git a/hw/pxa2xx_keypad.c b/hw/pxa2xx_keypad.c
index e33959d..de0a6c7 100644
--- a/hw/pxa2xx_keypad.c
+++ b/hw/pxa2xx_keypad.c
@@ -11,6 +11,7 @@
#include "hw.h"
#include "pxa.h"
#include "console.h"
+#include "exec-memory.h"
/*
* Keypad
@@ -80,6 +81,7 @@
#define PXAKBD_MAXCOL 8
struct PXA2xxKeyPadState {
+ MemoryRegion iomem;
qemu_irq irq;
struct keymap *map;
int pressed_cnt;
@@ -174,7 +176,8 @@ out:
return;
}
-static uint32_t pxa2xx_keypad_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pxa2xx_keypad_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
PXA2xxKeyPadState *s = (PXA2xxKeyPadState *) opaque;
uint32_t tmp;
@@ -235,8 +238,8 @@ static uint32_t pxa2xx_keypad_read(void *opaque, target_phys_addr_t offset)
return 0;
}
-static void pxa2xx_keypad_write(void *opaque,
- target_phys_addr_t offset, uint32_t value)
+static void pxa2xx_keypad_write(void *opaque, target_phys_addr_t offset,
+ uint64_t value, unsigned size)
{
PXA2xxKeyPadState *s = (PXA2xxKeyPadState *) opaque;
@@ -277,16 +280,10 @@ static void pxa2xx_keypad_write(void *opaque,
}
}
-static CPUReadMemoryFunc * const pxa2xx_keypad_readfn[] = {
- pxa2xx_keypad_read,
- pxa2xx_keypad_read,
- pxa2xx_keypad_read
-};
-
-static CPUWriteMemoryFunc * const pxa2xx_keypad_writefn[] = {
- pxa2xx_keypad_write,
- pxa2xx_keypad_write,
- pxa2xx_keypad_write
+static const MemoryRegionOps pxa2xx_keypad_ops = {
+ .read = pxa2xx_keypad_read,
+ .write = pxa2xx_keypad_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static const VMStateDescription vmstate_pxa2xx_keypad = {
@@ -309,15 +306,14 @@ static const VMStateDescription vmstate_pxa2xx_keypad = {
PXA2xxKeyPadState *pxa27x_keypad_init(target_phys_addr_t base,
qemu_irq irq)
{
- int iomemtype;
PXA2xxKeyPadState *s;
s = (PXA2xxKeyPadState *) g_malloc0(sizeof(PXA2xxKeyPadState));
s->irq = irq;
- iomemtype = cpu_register_io_memory(pxa2xx_keypad_readfn,
- pxa2xx_keypad_writefn, s, DEVICE_NATIVE_ENDIAN);
- cpu_register_physical_memory(base, 0x00100000, iomemtype);
+ memory_region_init_io(&s->iomem, &pxa2xx_keypad_ops, s,
+ "keypad", 0x00100000);
+ memory_region_add_subregion(get_system_memory(), base, &s->iomem);
vmstate_register(NULL, 0, &vmstate_pxa2xx_keypad, s);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 07/10] pxa2xx_timer: convert to memory API
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
` (5 preceding siblings ...)
2011-10-26 14:56 ` [Qemu-devel] [PATCH 06/10] pxa2xx_keypad: convert to memory API Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 08/10] pxa2xx_pic: " Benoît Canet
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_timer.c | 28 ++++++++++++----------------
1 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/hw/pxa2xx_timer.c b/hw/pxa2xx_timer.c
index 4235e42..38dd8e0 100644
--- a/hw/pxa2xx_timer.c
+++ b/hw/pxa2xx_timer.c
@@ -12,6 +12,7 @@
#include "sysemu.h"
#include "pxa.h"
#include "sysbus.h"
+#include "exec-memory.h"
#define OSMR0 0x00
#define OSMR1 0x04
@@ -81,6 +82,7 @@ typedef struct {
struct PXA2xxTimerInfo {
SysBusDevice busdev;
+ MemoryRegion iomem;
uint32_t flags;
int32_t clock;
@@ -148,7 +150,8 @@ static void pxa2xx_timer_update4(void *opaque, uint64_t now_qemu, int n)
qemu_mod_timer(s->tm4[n].tm.qtimer, new_qemu);
}
-static uint32_t pxa2xx_timer_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pxa2xx_timer_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
PXA2xxTimerInfo *s = (PXA2xxTimerInfo *) opaque;
int tm = 0;
@@ -226,7 +229,7 @@ static uint32_t pxa2xx_timer_read(void *opaque, target_phys_addr_t offset)
}
static void pxa2xx_timer_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
int i, tm = 0;
PXA2xxTimerInfo *s = (PXA2xxTimerInfo *) opaque;
@@ -325,16 +328,10 @@ static void pxa2xx_timer_write(void *opaque, target_phys_addr_t offset,
}
}
-static CPUReadMemoryFunc * const pxa2xx_timer_readfn[] = {
- pxa2xx_timer_read,
- pxa2xx_timer_read,
- pxa2xx_timer_read,
-};
-
-static CPUWriteMemoryFunc * const pxa2xx_timer_writefn[] = {
- pxa2xx_timer_write,
- pxa2xx_timer_write,
- pxa2xx_timer_write,
+static const MemoryRegionOps pxa2xx_timer_ops = {
+ .read = pxa2xx_timer_read,
+ .write = pxa2xx_timer_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void pxa2xx_timer_tick(void *opaque)
@@ -387,7 +384,6 @@ static int pxa25x_timer_post_load(void *opaque, int version_id)
static int pxa2xx_timer_init(SysBusDevice *dev)
{
int i;
- int iomemtype;
PXA2xxTimerInfo *s;
s = FROM_SYSBUS(PXA2xxTimerInfo, dev);
@@ -419,9 +415,9 @@ static int pxa2xx_timer_init(SysBusDevice *dev)
}
}
- iomemtype = cpu_register_io_memory(pxa2xx_timer_readfn,
- pxa2xx_timer_writefn, s, DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x00001000, iomemtype);
+ memory_region_init_io(&s->iomem, &pxa2xx_timer_ops, s,
+ "timer", 0x00001000);
+ sysbus_init_mmio_region(dev, &s->iomem);
return 0;
}
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 08/10] pxa2xx_pic: convert to memory API
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
` (6 preceding siblings ...)
2011-10-26 14:56 ` [Qemu-devel] [PATCH 07/10] pxa2xx_timer: " Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 09/10] pxa2xx_mmci: " Benoît Canet
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
The ARM documentation say transfers between the cpu and the
coprocessor are 32 bits wide.
Use 4 as size for coprocessor read and writes.
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_pic.c | 31 +++++++++++++------------------
1 files changed, 13 insertions(+), 18 deletions(-)
diff --git a/hw/pxa2xx_pic.c b/hw/pxa2xx_pic.c
index bdd82e6..eef6bca 100644
--- a/hw/pxa2xx_pic.c
+++ b/hw/pxa2xx_pic.c
@@ -33,6 +33,7 @@
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
CPUState *cpu_env;
uint32_t int_enabled[2];
uint32_t int_pending[2];
@@ -115,7 +116,8 @@ static inline uint32_t pxa2xx_pic_highest(PXA2xxPICState *s) {
return ichp;
}
-static uint32_t pxa2xx_pic_mem_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pxa2xx_pic_mem_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
PXA2xxPICState *s = (PXA2xxPICState *) opaque;
@@ -155,7 +157,7 @@ static uint32_t pxa2xx_pic_mem_read(void *opaque, target_phys_addr_t offset)
}
static void pxa2xx_pic_mem_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
PXA2xxPICState *s = (PXA2xxPICState *) opaque;
@@ -214,7 +216,7 @@ static uint32_t pxa2xx_pic_cp_read(void *opaque, int op2, int reg, int crm)
}
offset = pxa2xx_cp_reg_map[reg];
- return pxa2xx_pic_mem_read(opaque, offset);
+ return pxa2xx_pic_mem_read(opaque, offset, 4);
}
static void pxa2xx_pic_cp_write(void *opaque, int op2, int reg, int crm,
@@ -228,19 +230,13 @@ static void pxa2xx_pic_cp_write(void *opaque, int op2, int reg, int crm,
}
offset = pxa2xx_cp_reg_map[reg];
- pxa2xx_pic_mem_write(opaque, offset, value);
+ pxa2xx_pic_mem_write(opaque, offset, value, 4);
}
-static CPUReadMemoryFunc * const pxa2xx_pic_readfn[] = {
- pxa2xx_pic_mem_read,
- pxa2xx_pic_mem_read,
- pxa2xx_pic_mem_read,
-};
-
-static CPUWriteMemoryFunc * const pxa2xx_pic_writefn[] = {
- pxa2xx_pic_mem_write,
- pxa2xx_pic_mem_write,
- pxa2xx_pic_mem_write,
+static const MemoryRegionOps pxa2xx_pic_ops = {
+ .read = pxa2xx_pic_mem_read,
+ .write = pxa2xx_pic_mem_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static int pxa2xx_pic_post_load(void *opaque, int version_id)
@@ -252,7 +248,6 @@ static int pxa2xx_pic_post_load(void *opaque, int version_id)
DeviceState *pxa2xx_pic_init(target_phys_addr_t base, CPUState *env)
{
DeviceState *dev = qdev_create(NULL, "pxa2xx_pic");
- int iomemtype;
PXA2xxPICState *s = FROM_SYSBUS(PXA2xxPICState, sysbus_from_qdev(dev));
s->cpu_env = env;
@@ -269,9 +264,9 @@ DeviceState *pxa2xx_pic_init(target_phys_addr_t base, CPUState *env)
qdev_init_gpio_in(dev, pxa2xx_pic_set_irq, PXA2XX_PIC_SRCS);
/* Enable IC memory-mapped registers access. */
- iomemtype = cpu_register_io_memory(pxa2xx_pic_readfn,
- pxa2xx_pic_writefn, s, DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(sysbus_from_qdev(dev), 0x00100000, iomemtype);
+ memory_region_init_io(&s->iomem, &pxa2xx_pic_ops, s,
+ "pic", 0x00100000);
+ sysbus_init_mmio_region(sysbus_from_qdev(dev), &s->iomem);
sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
/* Enable IC coprocessor access. */
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 09/10] pxa2xx_mmci: convert to memory API.
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
` (7 preceding siblings ...)
2011-10-26 14:56 ` [Qemu-devel] [PATCH 08/10] pxa2xx_pic: " Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-26 14:56 ` [Qemu-devel] [PATCH 10/10] pxa2xx_lcd: " Benoît Canet
2011-10-30 11:59 ` [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Avi Kivity
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Convert mechanicaly; the access size of the old_mmio fields
seems odd.
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_mmci.c | 28 ++++++++++++++--------------
1 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/hw/pxa2xx_mmci.c b/hw/pxa2xx_mmci.c
index 1de4979..58e6e29 100644
--- a/hw/pxa2xx_mmci.c
+++ b/hw/pxa2xx_mmci.c
@@ -11,8 +11,10 @@
#include "pxa.h"
#include "sd.h"
#include "qdev.h"
+#include "exec-memory.h"
struct PXA2xxMMCIState {
+ MemoryRegion iomem;
qemu_irq irq;
qemu_irq rx_dma;
qemu_irq tx_dma;
@@ -403,12 +405,6 @@ static uint32_t pxa2xx_mmci_readw(void *opaque, target_phys_addr_t offset)
return pxa2xx_mmci_read(opaque, offset);
}
-static CPUReadMemoryFunc * const pxa2xx_mmci_readfn[] = {
- pxa2xx_mmci_readb,
- pxa2xx_mmci_readh,
- pxa2xx_mmci_readw
-};
-
static void pxa2xx_mmci_writeb(void *opaque,
target_phys_addr_t offset, uint32_t value)
{
@@ -433,10 +429,16 @@ static void pxa2xx_mmci_writew(void *opaque,
pxa2xx_mmci_write(opaque, offset, value);
}
-static CPUWriteMemoryFunc * const pxa2xx_mmci_writefn[] = {
- pxa2xx_mmci_writeb,
- pxa2xx_mmci_writeh,
- pxa2xx_mmci_writew
+static const MemoryRegionOps pxa2xx_mmci_ops = {
+ .old_mmio = {
+ .read = { pxa2xx_mmci_readb,
+ pxa2xx_mmci_readh,
+ pxa2xx_mmci_readw, },
+ .write = { pxa2xx_mmci_writeb,
+ pxa2xx_mmci_writeh,
+ pxa2xx_mmci_writew, },
+ },
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void pxa2xx_mmci_save(QEMUFile *f, void *opaque)
@@ -521,7 +523,6 @@ PXA2xxMMCIState *pxa2xx_mmci_init(target_phys_addr_t base,
BlockDriverState *bd, qemu_irq irq,
qemu_irq rx_dma, qemu_irq tx_dma)
{
- int iomemtype;
PXA2xxMMCIState *s;
s = (PXA2xxMMCIState *) g_malloc0(sizeof(PXA2xxMMCIState));
@@ -529,9 +530,8 @@ PXA2xxMMCIState *pxa2xx_mmci_init(target_phys_addr_t base,
s->rx_dma = rx_dma;
s->tx_dma = tx_dma;
- iomemtype = cpu_register_io_memory(pxa2xx_mmci_readfn,
- pxa2xx_mmci_writefn, s, DEVICE_NATIVE_ENDIAN);
- cpu_register_physical_memory(base, 0x00100000, iomemtype);
+ memory_region_init_io(&s->iomem, &pxa2xx_mmci_ops, s, "mmc", 0x00100000);
+ memory_region_add_subregion(get_system_memory(), base, &s->iomem);
/* Instantiate the actual storage */
s->card = sd_init(bd, 0);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 10/10] pxa2xx_lcd: convert to memory API
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
` (8 preceding siblings ...)
2011-10-26 14:56 ` [Qemu-devel] [PATCH 09/10] pxa2xx_mmci: " Benoît Canet
@ 2011-10-26 14:56 ` Benoît Canet
2011-10-30 11:59 ` [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Avi Kivity
10 siblings, 0 replies; 12+ messages in thread
From: Benoît Canet @ 2011-10-26 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa2xx_lcd.c | 30 +++++++++++++-----------------
1 files changed, 13 insertions(+), 17 deletions(-)
diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c
index b73290c..2ab3c3b 100644
--- a/hw/pxa2xx_lcd.c
+++ b/hw/pxa2xx_lcd.c
@@ -14,6 +14,7 @@
/* FIXME: For graphic_rotate. Should probably be done in common code. */
#include "sysemu.h"
#include "framebuffer.h"
+#include "exec-memory.h"
struct DMAChannel {
target_phys_addr_t branch;
@@ -30,6 +31,7 @@ struct DMAChannel {
};
struct PXA2xxLCDState {
+ MemoryRegion iomem;
qemu_irq irq;
int irqlevel;
@@ -315,7 +317,8 @@ static void pxa2xx_descriptor_load(PXA2xxLCDState *s)
}
}
-static uint32_t pxa2xx_lcdc_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pxa2xx_lcdc_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
PXA2xxLCDState *s = (PXA2xxLCDState *) opaque;
int ch;
@@ -408,8 +411,8 @@ static uint32_t pxa2xx_lcdc_read(void *opaque, target_phys_addr_t offset)
return 0;
}
-static void pxa2xx_lcdc_write(void *opaque,
- target_phys_addr_t offset, uint32_t value)
+static void pxa2xx_lcdc_write(void *opaque, target_phys_addr_t offset,
+ uint64_t value, unsigned size)
{
PXA2xxLCDState *s = (PXA2xxLCDState *) opaque;
int ch;
@@ -561,16 +564,10 @@ static void pxa2xx_lcdc_write(void *opaque,
}
}
-static CPUReadMemoryFunc * const pxa2xx_lcdc_readfn[] = {
- pxa2xx_lcdc_read,
- pxa2xx_lcdc_read,
- pxa2xx_lcdc_read
-};
-
-static CPUWriteMemoryFunc * const pxa2xx_lcdc_writefn[] = {
- pxa2xx_lcdc_write,
- pxa2xx_lcdc_write,
- pxa2xx_lcdc_write
+static const MemoryRegionOps pxa2xx_lcdc_ops = {
+ .read = pxa2xx_lcdc_read,
+ .write = pxa2xx_lcdc_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
/* Load new palette for a given DMA channel, convert to internal format */
@@ -983,7 +980,6 @@ static const VMStateDescription vmstate_pxa2xx_lcdc = {
PXA2xxLCDState *pxa2xx_lcdc_init(target_phys_addr_t base, qemu_irq irq)
{
- int iomemtype;
PXA2xxLCDState *s;
s = (PXA2xxLCDState *) g_malloc0(sizeof(PXA2xxLCDState));
@@ -992,9 +988,9 @@ PXA2xxLCDState *pxa2xx_lcdc_init(target_phys_addr_t base, qemu_irq irq)
pxa2xx_lcdc_orientation(s, graphic_rotate);
- iomemtype = cpu_register_io_memory(pxa2xx_lcdc_readfn,
- pxa2xx_lcdc_writefn, s, DEVICE_NATIVE_ENDIAN);
- cpu_register_physical_memory(base, 0x00100000, iomemtype);
+ memory_region_init_io(&s->iomem, &pxa2xx_lcdc_ops, s,
+ "lcd-controller", 0x00100000);
+ memory_region_add_subregion(get_system_memory(), base, &s->iomem);
s->ds = graphic_console_init(pxa2xx_update_display,
pxa2xx_invalidate_display,
--
1.7.4.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions
2011-10-26 14:56 [Qemu-devel] [PATCH 00/10] pxa2xx: memory API conversions Benoît Canet
` (9 preceding siblings ...)
2011-10-26 14:56 ` [Qemu-devel] [PATCH 10/10] pxa2xx_lcd: " Benoît Canet
@ 2011-10-30 11:59 ` Avi Kivity
10 siblings, 0 replies; 12+ messages in thread
From: Avi Kivity @ 2011-10-30 11:59 UTC (permalink / raw)
To: Benoît Canet; +Cc: peter.maydell, qemu-devel
On 10/26/2011 04:56 PM, Benoît Canet wrote:
> Convert most of pxa2xx periferal to memory API.
>
> pxa2xx_dmai.c was intact appart because it use
> cpu_physical_memory_read/write internal and seems special.
>
This patchset adds a lot of calls to get_system_memory(), which
undermines one of the purposes of the memory API - to avoid global
knowledge. Please make the various initialization functions accept a
MemoryRegion parameter, and use get_system_memory() in just one place
(the best place is the machine init callback).
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 12+ messages in thread