[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 4/7] pcmcia: move all card callbacks to PCMCIACardIn
From: |
Dmitry Eremin-Solenikov |
Subject: |
[Qemu-devel] [PATCH 4/7] pcmcia: move all card callbacks to PCMCIACardInfo |
Date: |
Mon, 11 Apr 2011 17:33:36 +0400 |
Signed-off-by: Dmitry Eremin-Solenikov <address@hidden>
last commit fixup
Signed-off-by: Dmitry Eremin-Solenikov <address@hidden>
Revert "microdrive fixup"
This reverts commit 6a9f969b0626e218ff910d84ed1c9eec285cbcd5.
Signed-off-by: Dmitry Eremin-Solenikov <address@hidden>
---
hw/ide/microdrive.c | 41 ++++++++++++++++++++---------------------
hw/pcmcia.h | 29 +++++++++++++++--------------
hw/pxa2xx_pcmcia.c | 16 ++++++++--------
3 files changed, 43 insertions(+), 43 deletions(-)
diff --git a/hw/ide/microdrive.c b/hw/ide/microdrive.c
index 167ec09..a251544 100644
--- a/hw/ide/microdrive.c
+++ b/hw/ide/microdrive.c
@@ -113,9 +113,9 @@ static void md_reset(MicroDriveState *s)
ide_bus_reset(&s->bus);
}
-static uint8_t md_attr_read(void *opaque, uint32_t at)
+static uint8_t md_attr_read(PCMCIACardState *opaque, uint32_t at)
{
- MicroDriveState *s = opaque;
+ MicroDriveState *s = DO_UPCAST(MicroDriveState, card, opaque);
if (at < s->attr_base) {
if (at < s->card.cis_len)
return s->card.cis[at];
@@ -146,9 +146,9 @@ static uint8_t md_attr_read(void *opaque, uint32_t at)
return 0;
}
-static void md_attr_write(void *opaque, uint32_t at, uint8_t value)
+static void md_attr_write(PCMCIACardState *opaque, uint32_t at, uint8_t value)
{
- MicroDriveState *s = opaque;
+ MicroDriveState *s = DO_UPCAST(MicroDriveState, card, opaque);
at -= s->attr_base;
switch (at) {
@@ -177,9 +177,9 @@ static void md_attr_write(void *opaque, uint32_t at,
uint8_t value)
}
}
-static uint16_t md_common_read(void *opaque, uint32_t at)
+static uint16_t md_common_read(PCMCIACardState *opaque, uint32_t at)
{
- MicroDriveState *s = opaque;
+ MicroDriveState *s = DO_UPCAST(MicroDriveState, card, opaque);
IDEState *ifs;
uint16_t ret;
at -= s->io_base;
@@ -239,9 +239,9 @@ static uint16_t md_common_read(void *opaque, uint32_t at)
return 0;
}
-static void md_common_write(void *opaque, uint32_t at, uint16_t value)
+static void md_common_write(PCMCIACardState *opaque, uint32_t at, uint16_t
value)
{
- MicroDriveState *s = opaque;
+ MicroDriveState *s = DO_UPCAST(MicroDriveState, card, opaque);
at -= s->io_base;
switch (s->opt & OPT_MODE) {
@@ -503,15 +503,9 @@ static const uint8_t dscm1xxxx_cis[0x14a] = {
[0x146] = CISTPL_END, /* Tuple End */
};
-static int dscm1xxxx_attach(void *opaque)
+static int dscm1xxxx_attach(PCMCIACardState *opaque)
{
- MicroDriveState *md = opaque;
- md->card.attr_read = md_attr_read;
- md->card.attr_write = md_attr_write;
- md->card.common_read = md_common_read;
- md->card.common_write = md_common_write;
- md->card.io_read = md_common_read;
- md->card.io_write = md_common_write;
+ MicroDriveState *md = DO_UPCAST(MicroDriveState, card, opaque);
md->attr_base = md->card.cis[0x74] | (md->card.cis[0x76] << 8);
md->io_base = 0x0;
@@ -523,9 +517,9 @@ static int dscm1xxxx_attach(void *opaque)
return 0;
}
-static int dscm1xxxx_detach(void *opaque)
+static int dscm1xxxx_detach(PCMCIACardState *opaque)
{
- MicroDriveState *md = opaque;
+ MicroDriveState *md = DO_UPCAST(MicroDriveState, card, opaque);
md_reset(md);
return 0;
}
@@ -552,9 +546,6 @@ static int dscm1xxxx_initfn(PCMCIACardState *state)
MicroDriveState *md;
md = DO_UPCAST(MicroDriveState, card, state);
- md->card.state = md;
- md->card.attach = dscm1xxxx_attach;
- md->card.detach = dscm1xxxx_detach;
md->card.cis = dscm1xxxx_cis;
md->card.cis_len = sizeof(dscm1xxxx_cis);
@@ -571,6 +562,14 @@ static PCMCIACardInfo dscm1xxxx_info = {
.init = dscm1xxxx_initfn,
.qdev.size = sizeof(MicroDriveState),
.qdev.vmsd = &vmstate_microdrive,
+ .attach = dscm1xxxx_attach,
+ .detach = dscm1xxxx_detach,
+ .attr_read = md_attr_read,
+ .attr_write = md_attr_write,
+ .common_read = md_common_read,
+ .common_write = md_common_write,
+ .io_read = md_common_read,
+ .io_write = md_common_write,
};
static void dscm1xxxx_register(void)
diff --git a/hw/pcmcia.h b/hw/pcmcia.h
index c6b8100..2c012d9 100644
--- a/hw/pcmcia.h
+++ b/hw/pcmcia.h
@@ -3,13 +3,15 @@
#include "qemu-common.h"
#include "qdev.h"
-typedef struct {
+typedef struct PCMCIASocket PCMCIASocket;
+
+struct PCMCIASocket {
BusState qbus;
qemu_irq irq;
int attached;
const char *slot_string;
const char *card_string;
-} PCMCIASocket;
+};
void pcmcia_socket_register(PCMCIASocket *socket, DeviceState *parent);
void pcmcia_socket_unregister(PCMCIASocket *socket);
@@ -19,26 +21,25 @@ typedef struct PCMCIACardInfo {
DeviceInfo qdev;
int (*init)(PCMCIACardState *state);
+
+ int (*attach)(PCMCIACardState *state);
+ int (*detach)(PCMCIACardState *state);
+
+ /* Only valid if attached */
+ uint8_t (*attr_read)(PCMCIACardState *state, uint32_t address);
+ void (*attr_write)(PCMCIACardState *state, uint32_t address, uint8_t
value);
+ uint16_t (*common_read)(PCMCIACardState *state, uint32_t address);
+ void (*common_write)(PCMCIACardState *state, uint32_t address, uint16_t
value);
+ uint16_t (*io_read)(PCMCIACardState *state, uint32_t address);
+ void (*io_write)(PCMCIACardState *state, uint32_t address, uint16_t value);
} PCMCIACardInfo;
struct PCMCIACardState {
DeviceState dev;
PCMCIACardInfo *info;
-
- void *state;
PCMCIASocket *slot;
- int (*attach)(void *state);
- int (*detach)(void *state);
const uint8_t *cis;
int cis_len;
-
- /* Only valid if attached */
- uint8_t (*attr_read)(void *state, uint32_t address);
- void (*attr_write)(void *state, uint32_t address, uint8_t value);
- uint16_t (*common_read)(void *state, uint32_t address);
- void (*common_write)(void *state, uint32_t address, uint16_t value);
- uint16_t (*io_read)(void *state, uint32_t address);
- void (*io_write)(void *state, uint32_t address, uint16_t value);
};
void pcmcia_card_register(PCMCIACardInfo *info);
diff --git a/hw/pxa2xx_pcmcia.c b/hw/pxa2xx_pcmcia.c
index 61afaf1..ae7d01a 100644
--- a/hw/pxa2xx_pcmcia.c
+++ b/hw/pxa2xx_pcmcia.c
@@ -29,7 +29,7 @@ static uint32_t pxa2xx_pcmcia_common_read(void *opaque,
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
if (s->slot.attached) {
- return s->card->common_read(s->card->state, offset);
+ return s->card->info->common_read(s->card, offset);
}
return 0;
@@ -41,7 +41,7 @@ static void pxa2xx_pcmcia_common_write(void *opaque,
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
if (s->slot.attached) {
- s->card->common_write(s->card->state, offset, value);
+ s->card->info->common_write(s->card, offset, value);
}
}
@@ -51,7 +51,7 @@ static uint32_t pxa2xx_pcmcia_attr_read(void *opaque,
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
if (s->slot.attached) {
- return s->card->attr_read(s->card->state, offset);
+ return s->card->info->attr_read(s->card, offset);
}
return 0;
@@ -63,7 +63,7 @@ static void pxa2xx_pcmcia_attr_write(void *opaque,
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
if (s->slot.attached) {
- s->card->attr_write(s->card->state, offset, value);
+ s->card->info->attr_write(s->card, offset, value);
}
}
@@ -73,7 +73,7 @@ static uint32_t pxa2xx_pcmcia_io_read(void *opaque,
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
if (s->slot.attached) {
- return s->card->io_read(s->card->state, offset);
+ return s->card->info->io_read(s->card, offset);
}
return 0;
@@ -85,7 +85,7 @@ static void pxa2xx_pcmcia_io_write(void *opaque,
PXA2xxPCMCIAState *s = (PXA2xxPCMCIAState *) opaque;
if (s->slot.attached) {
- s->card->io_write(s->card->state, offset, value);
+ s->card->info->io_write(s->card, offset, value);
}
}
@@ -206,7 +206,7 @@ int pxa2xx_pcmcia_attach(void *opaque, PCMCIACardState
*card)
s->slot.attached = 1;
s->card->slot = &s->slot;
- s->card->attach(s->card->state);
+ s->card->info->attach(s->card);
return 0;
}
@@ -218,7 +218,7 @@ int pxa2xx_pcmcia_dettach(void *opaque)
if (!s->slot.attached)
return -ENOENT;
- s->card->detach(s->card->state);
+ s->card->info->detach(s->card);
s->card->slot = NULL;
s->card = NULL;
--
1.7.4.1
- [Qemu-devel] [PATCH 0/7] Rework PCMCIA subsystem, Dmitry Eremin-Solenikov, 2011/04/11
- [Qemu-devel] [PATCH 2/7] PCMCIA: start qdev'ication, Dmitry Eremin-Solenikov, 2011/04/11
- [Qemu-devel] [PATCH 3/7] microdrive: qdevify, Dmitry Eremin-Solenikov, 2011/04/11
- [Qemu-devel] [PATCH 1/7] pxa2xx_pcmcia: qdevify, Dmitry Eremin-Solenikov, 2011/04/11
- [Qemu-devel] [PATCH 5/7] pcmcia: move attach and detach socket methods to PCMCIASocket, Dmitry Eremin-Solenikov, 2011/04/11
- [Qemu-devel] [PATCH 4/7] pcmcia: move all card callbacks to PCMCIACardInfo,
Dmitry Eremin-Solenikov <=
- [Qemu-devel] [PATCH 6/7] pxa: change order of pcmcia devices instantiation, so that the socket 0 will be default, Dmitry Eremin-Solenikov, 2011/04/11
- [Qemu-devel] [PATCH 7/7] ide-core: allocate metadata storage for CFATA drives, Dmitry Eremin-Solenikov, 2011/04/11
- Re: [Qemu-devel] [PATCH 0/7] Rework PCMCIA subsystem, Dmitry Eremin-Solenikov, 2011/04/16
- Re: [Qemu-devel] [PATCH 0/7] Rework PCMCIA subsystem, Dmitry Eremin-Solenikov, 2011/04/21