* [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions
@ 2011-10-30 13:50 Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 1/9] pxa2xx_gpio: convert to memory API Benoît Canet
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Convert most of pxa2xx peripheral to memory API.
pxa2xx_dma.c was left intact because it use
cpu_physical_memory_read/write internally and seems special.
In this version :
Remove abusive usage of get_system_memory()
Fix MemoryRegion names
Benoît Canet (9):
pxa2xx_gpio: convert to memory API
pxa2xx_pcmcia.c: convert common memory space to memory API
pxa2xx_pcmcia.c: convert attribute memory space to memory API
pxa2xx_pcmcia.c: convert io memory space to memory API
pxa2xx_keypad: convert to memory API
pxa2xx_timer: convert to memory API
pxa2xx_pic: convert to memory API
pxa2xx_mmci: convert to memory API.
pxa2xx_lcd: convert to memory API
hw/pxa.h | 15 +++++---
hw/pxa2xx.c | 18 +++++-----
hw/pxa2xx_gpio.c | 29 ++++++----------
hw/pxa2xx_keypad.c | 34 ++++++++----------
hw/pxa2xx_lcd.c | 32 ++++++++----------
hw/pxa2xx_mmci.c | 31 +++++++++--------
hw/pxa2xx_pcmcia.c | 95 +++++++++++++++++++++++-----------------------------
hw/pxa2xx_pic.c | 31 +++++++----------
hw/pxa2xx_timer.c | 27 ++++++---------
9 files changed, 140 insertions(+), 172 deletions(-)
--
1.7.5.4
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 1/9] pxa2xx_gpio: convert to memory API
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
@ 2011-10-30 13:50 ` Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 2/9] pxa2xx_pcmcia.c: convert common memory space " Benoît Canet
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 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..aed3d4c 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, "pxa2xx-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.5.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 2/9] pxa2xx_pcmcia.c: convert common memory space to memory API
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 1/9] pxa2xx_gpio: convert to memory API Benoît Canet
@ 2011-10-30 13:50 ` Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 3/9] pxa2xx_pcmcia.c: convert attribute " Benoît Canet
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa.h | 3 ++-
hw/pxa2xx.c | 8 ++++----
hw/pxa2xx_pcmcia.c | 33 +++++++++++++++------------------
3 files changed, 21 insertions(+), 23 deletions(-)
diff --git a/hw/pxa.h b/hw/pxa.h
index 7e98384..fe99a50 100644
--- a/hw/pxa.h
+++ b/hw/pxa.h
@@ -93,7 +93,8 @@ void pxa2xx_mmci_handlers(PXA2xxMMCIState *s, qemu_irq readonly,
/* pxa2xx_pcmcia.c */
typedef struct PXA2xxPCMCIAState PXA2xxPCMCIAState;
-PXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base);
+PXA2xxPCMCIAState *pxa2xx_pcmcia_init(MemoryRegion *sysmem,
+ target_phys_addr_t base);
int pxa2xx_pcmcia_attach(void *opaque, PCMCIACardState *card);
int pxa2xx_pcmcia_dettach(void *opaque);
void pxa2xx_pcmcia_set_irq_cb(void *opaque, qemu_irq irq, qemu_irq cd_irq);
diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c
index bfc28a9..27afd8d 100644
--- a/hw/pxa2xx.c
+++ b/hw/pxa2xx.c
@@ -2130,8 +2130,8 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_USBH1));
}
- s->pcmcia[0] = pxa2xx_pcmcia_init(0x20000000);
- s->pcmcia[1] = pxa2xx_pcmcia_init(0x30000000);
+ s->pcmcia[0] = pxa2xx_pcmcia_init(address_space, 0x20000000);
+ s->pcmcia[1] = pxa2xx_pcmcia_init(address_space, 0x30000000);
sysbus_create_simple("pxa2xx_rtc", 0x40900000,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_RTCALARM));
@@ -2259,8 +2259,8 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size)
qdev_get_gpio_in(s->pic, PXA2XX_PIC_USBH1));
}
- s->pcmcia[0] = pxa2xx_pcmcia_init(0x20000000);
- s->pcmcia[1] = pxa2xx_pcmcia_init(0x30000000);
+ s->pcmcia[0] = pxa2xx_pcmcia_init(address_space, 0x20000000);
+ s->pcmcia[1] = pxa2xx_pcmcia_init(address_space, 0x30000000);
sysbus_create_simple("pxa2xx_rtc", 0x40900000,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_RTCALARM));
diff --git a/hw/pxa2xx_pcmcia.c b/hw/pxa2xx_pcmcia.c
index 74c6817..6d1e96c 100644
--- a/hw/pxa2xx_pcmcia.c
+++ b/hw/pxa2xx_pcmcia.c
@@ -14,13 +14,14 @@
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 +32,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 +86,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[] = {
@@ -130,7 +125,8 @@ static void pxa2xx_pcmcia_set_irq(void *opaque, int line, int level)
qemu_set_irq(s->irq, level);
}
-PXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base)
+PXA2xxPCMCIAState *pxa2xx_pcmcia_init(MemoryRegion *sysmem,
+ target_phys_addr_t base)
{
int iomemtype;
PXA2xxPCMCIAState *s;
@@ -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,
+ "pxa2xx-pcmcia-common", 0x04000000);
+ memory_region_add_subregion(sysmem, base | 0x0c000000,
+ &s->common_iomem);
if (base == 0x30000000)
s->slot.slot_string = "PXA PC Card Socket 1";
--
1.7.5.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 3/9] pxa2xx_pcmcia.c: convert attribute memory space to memory API
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 1/9] pxa2xx_gpio: convert to memory API Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 2/9] pxa2xx_pcmcia.c: convert common memory space " Benoît Canet
@ 2011-10-30 13:50 ` Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 4/9] pxa2xx_pcmcia.c: convert io " Benoît Canet
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 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 6d1e96c..e5277ad 100644
--- a/hw/pxa2xx_pcmcia.c
+++ b/hw/pxa2xx_pcmcia.c
@@ -11,10 +11,12 @@
#include "pcmcia.h"
#include "pxa.h"
+
struct PXA2xxPCMCIAState {
PCMCIASocket slot;
PCMCIACardState *card;
MemoryRegion common_iomem;
+ MemoryRegion attr_iomem;
qemu_irq irq;
qemu_irq cd_irq;
@@ -42,8 +44,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;
@@ -54,8 +56,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;
@@ -92,16 +94,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(MemoryRegion *sysmem,
/* 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,
+ "pxa2xx-pcmcia-attribute", 0x04000000);
+ memory_region_add_subregion(sysmem, base | 0x08000000,
+ &s->attr_iomem);
/* Socket Common Memory Space */
memory_region_init_io(&s->common_iomem, &pxa2xx_pcmcia_common_ops, s,
--
1.7.5.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 4/9] pxa2xx_pcmcia.c: convert io memory space to memory API
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
` (2 preceding siblings ...)
2011-10-30 13:50 ` [Qemu-devel] [PATCH 3/9] pxa2xx_pcmcia.c: convert attribute " Benoît Canet
@ 2011-10-30 13:50 ` Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 5/9] pxa2xx_keypad: convert " Benoît Canet
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 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 e5277ad..dc522dc 100644
--- a/hw/pxa2xx_pcmcia.c
+++ b/hw/pxa2xx_pcmcia.c
@@ -17,6 +17,7 @@ struct PXA2xxPCMCIAState {
PCMCIACardState *card;
MemoryRegion common_iomem;
MemoryRegion attr_iomem;
+ MemoryRegion iomem;
qemu_irq irq;
qemu_irq cd_irq;
@@ -66,8 +67,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;
@@ -78,8 +79,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;
@@ -100,16 +101,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(MemoryRegion *sysmem,
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,
+ "pxa2xx-pcmcia-io", 0x04000000);
+ memory_region_add_subregion(sysmem, base | 0x00000000,
+ &s->iomem);
/* Then next 64 MB is reserved */
--
1.7.5.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 5/9] pxa2xx_keypad: convert to memory API
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
` (3 preceding siblings ...)
2011-10-30 13:50 ` [Qemu-devel] [PATCH 4/9] pxa2xx_pcmcia.c: convert io " Benoît Canet
@ 2011-10-30 13:50 ` Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 6/9] pxa2xx_timer: " Benoît Canet
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa.h | 5 +++--
hw/pxa2xx.c | 2 +-
hw/pxa2xx_keypad.c | 34 +++++++++++++++-------------------
3 files changed, 19 insertions(+), 22 deletions(-)
diff --git a/hw/pxa.h b/hw/pxa.h
index fe99a50..2732f8f 100644
--- a/hw/pxa.h
+++ b/hw/pxa.h
@@ -105,8 +105,9 @@ struct keymap {
int row;
};
typedef struct PXA2xxKeyPadState PXA2xxKeyPadState;
-PXA2xxKeyPadState *pxa27x_keypad_init(target_phys_addr_t base,
- qemu_irq irq);
+PXA2xxKeyPadState *pxa27x_keypad_init(MemoryRegion *sysmem,
+ target_phys_addr_t base,
+ qemu_irq irq);
void pxa27x_register_keypad(PXA2xxKeyPadState *kp, struct keymap *map,
int size);
diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c
index 27afd8d..72b054c 100644
--- a/hw/pxa2xx.c
+++ b/hw/pxa2xx.c
@@ -2146,7 +2146,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
qdev_get_gpio_in(s->dma, PXA2XX_RX_RQ_I2S),
qdev_get_gpio_in(s->dma, PXA2XX_TX_RQ_I2S));
- s->kp = pxa27x_keypad_init(0x41500000,
+ s->kp = pxa27x_keypad_init(address_space, 0x41500000,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_KEYPAD));
/* GPIO1 resets the processor */
diff --git a/hw/pxa2xx_keypad.c b/hw/pxa2xx_keypad.c
index e33959d..f86323f 100644
--- a/hw/pxa2xx_keypad.c
+++ b/hw/pxa2xx_keypad.c
@@ -80,6 +80,7 @@
#define PXAKBD_MAXCOL 8
struct PXA2xxKeyPadState {
+ MemoryRegion iomem;
qemu_irq irq;
struct keymap *map;
int pressed_cnt;
@@ -174,7 +175,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 +237,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 +279,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 = {
@@ -306,18 +302,18 @@ static const VMStateDescription vmstate_pxa2xx_keypad = {
}
};
-PXA2xxKeyPadState *pxa27x_keypad_init(target_phys_addr_t base,
- qemu_irq irq)
+PXA2xxKeyPadState *pxa27x_keypad_init(MemoryRegion *sysmem,
+ 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,
+ "pxa2xx-keypad", 0x00100000);
+ memory_region_add_subregion(sysmem, base, &s->iomem);
vmstate_register(NULL, 0, &vmstate_pxa2xx_keypad, s);
--
1.7.5.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 6/9] pxa2xx_timer: convert to memory API
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
` (4 preceding siblings ...)
2011-10-30 13:50 ` [Qemu-devel] [PATCH 5/9] pxa2xx_keypad: convert " Benoît Canet
@ 2011-10-30 13:50 ` Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 7/9] pxa2xx_pic: " Benoît Canet
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 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 | 27 +++++++++++----------------
1 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/hw/pxa2xx_timer.c b/hw/pxa2xx_timer.c
index 4235e42..0c8e0d3 100644
--- a/hw/pxa2xx_timer.c
+++ b/hw/pxa2xx_timer.c
@@ -81,6 +81,7 @@ typedef struct {
struct PXA2xxTimerInfo {
SysBusDevice busdev;
+ MemoryRegion iomem;
uint32_t flags;
int32_t clock;
@@ -148,7 +149,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 +228,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 +327,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 +383,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 +414,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,
+ "pxa2xx-timer", 0x00001000);
+ sysbus_init_mmio_region(dev, &s->iomem);
return 0;
}
--
1.7.5.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 7/9] pxa2xx_pic: convert to memory API
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
` (5 preceding siblings ...)
2011-10-30 13:50 ` [Qemu-devel] [PATCH 6/9] pxa2xx_timer: " Benoît Canet
@ 2011-10-30 13:50 ` Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 8/9] pxa2xx_mmci: " Benoît Canet
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 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..13f96a9 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,
+ "pxa2xx-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.5.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 8/9] pxa2xx_mmci: convert to memory API.
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
` (6 preceding siblings ...)
2011-10-30 13:50 ` [Qemu-devel] [PATCH 7/9] pxa2xx_pic: " Benoît Canet
@ 2011-10-30 13:50 ` Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 9/9] pxa2xx_lcd: " Benoît Canet
2011-10-30 14:09 ` [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Avi Kivity
9 siblings, 0 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 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/pxa.h | 3 ++-
hw/pxa2xx.c | 4 ++--
hw/pxa2xx_mmci.c | 31 ++++++++++++++++---------------
3 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/hw/pxa.h b/hw/pxa.h
index 2732f8f..15ac760 100644
--- a/hw/pxa.h
+++ b/hw/pxa.h
@@ -85,7 +85,8 @@ void pxa2xx_lcdc_oritentation(void *opaque, int angle);
/* pxa2xx_mmci.c */
typedef struct PXA2xxMMCIState PXA2xxMMCIState;
-PXA2xxMMCIState *pxa2xx_mmci_init(target_phys_addr_t base,
+PXA2xxMMCIState *pxa2xx_mmci_init(MemoryRegion *sysmem,
+ target_phys_addr_t base,
BlockDriverState *bd, qemu_irq irq,
qemu_irq rx_dma, qemu_irq tx_dma);
void pxa2xx_mmci_handlers(PXA2xxMMCIState *s, qemu_irq readonly,
diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c
index 72b054c..f93329c 100644
--- a/hw/pxa2xx.c
+++ b/hw/pxa2xx.c
@@ -2069,7 +2069,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
fprintf(stderr, "qemu: missing SecureDigital device\n");
exit(1);
}
- s->mmc = pxa2xx_mmci_init(0x41100000, dinfo->bdrv,
+ s->mmc = pxa2xx_mmci_init(address_space, 0x41100000, dinfo->bdrv,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_MMC),
qdev_get_gpio_in(s->dma, PXA2XX_RX_RQ_MMCI),
qdev_get_gpio_in(s->dma, PXA2XX_TX_RQ_MMCI));
@@ -2198,7 +2198,7 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size)
fprintf(stderr, "qemu: missing SecureDigital device\n");
exit(1);
}
- s->mmc = pxa2xx_mmci_init(0x41100000, dinfo->bdrv,
+ s->mmc = pxa2xx_mmci_init(address_space, 0x41100000, dinfo->bdrv,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_MMC),
qdev_get_gpio_in(s->dma, PXA2XX_RX_RQ_MMCI),
qdev_get_gpio_in(s->dma, PXA2XX_TX_RQ_MMCI));
diff --git a/hw/pxa2xx_mmci.c b/hw/pxa2xx_mmci.c
index 1de4979..f47c79c 100644
--- a/hw/pxa2xx_mmci.c
+++ b/hw/pxa2xx_mmci.c
@@ -13,6 +13,7 @@
#include "qdev.h"
struct PXA2xxMMCIState {
+ MemoryRegion iomem;
qemu_irq irq;
qemu_irq rx_dma;
qemu_irq tx_dma;
@@ -403,12 +404,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 +428,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)
@@ -517,11 +518,11 @@ static int pxa2xx_mmci_load(QEMUFile *f, void *opaque, int version_id)
return 0;
}
-PXA2xxMMCIState *pxa2xx_mmci_init(target_phys_addr_t base,
+PXA2xxMMCIState *pxa2xx_mmci_init(MemoryRegion *sysmem,
+ 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,9 @@ 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,
+ "pxa2xx-mmci", 0x00100000);
+ memory_region_add_subregion(sysmem, base, &s->iomem);
/* Instantiate the actual storage */
s->card = sd_init(bd, 0);
--
1.7.5.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 9/9] pxa2xx_lcd: convert to memory API
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
` (7 preceding siblings ...)
2011-10-30 13:50 ` [Qemu-devel] [PATCH 8/9] pxa2xx_mmci: " Benoît Canet
@ 2011-10-30 13:50 ` Benoît Canet
2011-10-30 14:09 ` [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Avi Kivity
9 siblings, 0 replies; 11+ messages in thread
From: Benoît Canet @ 2011-10-30 13:50 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell, Benoît Canet, avi
Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
---
hw/pxa.h | 4 ++--
hw/pxa2xx.c | 4 ++--
hw/pxa2xx_lcd.c | 32 ++++++++++++++------------------
3 files changed, 18 insertions(+), 22 deletions(-)
diff --git a/hw/pxa.h b/hw/pxa.h
index 15ac760..e778739 100644
--- a/hw/pxa.h
+++ b/hw/pxa.h
@@ -78,8 +78,8 @@ DeviceState *pxa27x_dma_init(target_phys_addr_t base, qemu_irq irq);
/* pxa2xx_lcd.c */
typedef struct PXA2xxLCDState PXA2xxLCDState;
-PXA2xxLCDState *pxa2xx_lcdc_init(target_phys_addr_t base,
- qemu_irq irq);
+PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem,
+ target_phys_addr_t base, qemu_irq irq);
void pxa2xx_lcd_vsync_notifier(PXA2xxLCDState *s, qemu_irq handler);
void pxa2xx_lcdc_oritentation(void *opaque, int angle);
diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c
index f93329c..0c535ad 100644
--- a/hw/pxa2xx.c
+++ b/hw/pxa2xx.c
@@ -2091,7 +2091,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
qdev_get_gpio_in(s->dma, PXA2XX_TX_RQ_ICP),
serial_hds[i]);
- s->lcd = pxa2xx_lcdc_init(0x44000000,
+ s->lcd = pxa2xx_lcdc_init(address_space, 0x44000000,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_LCD));
s->cm_base = 0x41300000;
@@ -2220,7 +2220,7 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size)
qdev_get_gpio_in(s->dma, PXA2XX_TX_RQ_ICP),
serial_hds[i]);
- s->lcd = pxa2xx_lcdc_init(0x44000000,
+ s->lcd = pxa2xx_lcdc_init(address_space, 0x44000000,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_LCD));
s->cm_base = 0x41300000;
diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c
index b73290c..fd23d63 100644
--- a/hw/pxa2xx_lcd.c
+++ b/hw/pxa2xx_lcd.c
@@ -30,6 +30,7 @@ struct DMAChannel {
};
struct PXA2xxLCDState {
+ MemoryRegion iomem;
qemu_irq irq;
int irqlevel;
@@ -315,7 +316,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 +410,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 +563,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 */
@@ -981,9 +977,9 @@ static const VMStateDescription vmstate_pxa2xx_lcdc = {
#define BITS 32
#include "pxa2xx_template.h"
-PXA2xxLCDState *pxa2xx_lcdc_init(target_phys_addr_t base, qemu_irq irq)
+PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem,
+ 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,
+ "pxa2xx-lcd-controller", 0x00100000);
+ memory_region_add_subregion(sysmem, base, &s->iomem);
s->ds = graphic_console_init(pxa2xx_update_display,
pxa2xx_invalidate_display,
--
1.7.5.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
` (8 preceding siblings ...)
2011-10-30 13:50 ` [Qemu-devel] [PATCH 9/9] pxa2xx_lcd: " Benoît Canet
@ 2011-10-30 14:09 ` Avi Kivity
9 siblings, 0 replies; 11+ messages in thread
From: Avi Kivity @ 2011-10-30 14:09 UTC (permalink / raw)
To: Benoît Canet; +Cc: peter.maydell, qemu-devel
On 10/30/2011 03:50 PM, Benoît Canet wrote:
> Convert most of pxa2xx peripheral to memory API.
Thanks, applied to memory/queue.
> pxa2xx_dma.c was left intact because it use
> cpu_physical_memory_read/write internally and seems special.
>
It's actually not special, and unrelated to the memory API in its
current form (later we'll revise those calls too so that we have
information about the origin of the dma transaction).
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2011-10-30 14:09 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-30 13:50 [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 1/9] pxa2xx_gpio: convert to memory API Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 2/9] pxa2xx_pcmcia.c: convert common memory space " Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 3/9] pxa2xx_pcmcia.c: convert attribute " Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 4/9] pxa2xx_pcmcia.c: convert io " Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 5/9] pxa2xx_keypad: convert " Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 6/9] pxa2xx_timer: " Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 7/9] pxa2xx_pic: " Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 8/9] pxa2xx_mmci: " Benoît Canet
2011-10-30 13:50 ` [Qemu-devel] [PATCH 9/9] pxa2xx_lcd: " Benoît Canet
2011-10-30 14:09 ` [Qemu-devel] [PATCH V2 0/9] pxa2xx: memory API conversions Avi Kivity
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).