mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1 iQIcBAABAgAGBQJWsmNCAAoJEH3vgQaq/DkOQAEP/AwDY/JkKRQuTA2j8xvqxsrF ilzQhjvGva1WBU8iKP4L0ILvMbjzNrQh4LE31amY0Er+TDjRfqZkz7vc+/6cQ3uY FzXVKYySHbO3hbcamarr+sYu+T7D/6o4uvH04Vj0VDYiGJWcfKitBq2nfXbB55WW M9AgKLyMwvRPjfHu9Hp8BIIvQbQvzCnz0lB6q2Bzb4Gb/zR6qmXXXSLsTwXnfmD+ LDLi/sN/hhdX2yMqNpDmNDqmGoX+NsK2C2AN0X9uEvQ0ePUcIScI338GfP9OeCGs To55rYGhyGCYdhEIGh8qdY47r87KrNxFtZXCMcv+oBbXuPIlpxZNESc+b5hzsWFp nAJq2FqVH0e69RDV/jl0TviNE8FO2auOZroD/VwWpY6Pk2rhYVUbc6dN13R69Bs5 iGNEOBC1UI8eFOEEEoyHE+IHXCRodGUpDGa1oNzYvsPir1LKXoYqwwMjMCzDUUMA DEPdhQdj7Q9VzYI8GtTEuysunPfOGrjBsaMXvOgJMbU1wZqvqQU4gw5itJGeLGNC oc6yfIhmkv8j5N5l3qBzIOcU0iJGRlX2Z8pMPKjtvuLkkw6TBAm2Jal7Xkx8C3TX AGXE05khcq8y8wD3jtZJfpLlSkJoJpcD1BaAxig1H1t8hrtntUNnAQ9OfUnAuAZ5 yjN4MOqG+rPelBqEaMMj =UnwI -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/jnsnow/tags/ide-pull-request' into staging # gpg: Signature made Wed 03 Feb 2016 20:29:54 GMT using RSA key ID AAFC390E # gpg: Good signature from "John Snow (John Huston) <jsnow@redhat.com>" * remotes/jnsnow/tags/ide-pull-request: dma: remove now useless DMA_* functions sb16: use IsaDma interface instead of global DMA_* functions gus: use IsaDma interface instead of global DMA_* functions cs4231a: use IsaDma interface instead of global DMA_* functions fdc: use IsaDma interface instead of global DMA_* functions sparc64: disable floppy DMA sparc: disable floppy DMA magnum: disable floppy DMA for now i8257: implement the IsaDma interface isa: add an ISA DMA interface, and store it within the ISA bus i8257: move state definition to new independent header i8257: QOM'ify i8257: add missing const i8257: make the DMA running method per controller i8257: rename functions to start with i8257_ prefix i8257: rename struct dma_regs to I8257Regs i8257: rename struct dma_cont to I8257State i8257: pass ISA bus to DMA_init() function i82374: device only existed as ISA device, so simplify device fdc: fix detection under Linux Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
ae533a46a1
16 changed files with 473 additions and 318 deletions
42
include/hw/isa/i8257.h
Normal file
42
include/hw/isa/i8257.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
#ifndef HW_I8257_H
|
||||
#define HW_I8257_H
|
||||
|
||||
#define TYPE_I8257 "i8257"
|
||||
|
||||
typedef struct I8257Regs {
|
||||
int now[2];
|
||||
uint16_t base[2];
|
||||
uint8_t mode;
|
||||
uint8_t page;
|
||||
uint8_t pageh;
|
||||
uint8_t dack;
|
||||
uint8_t eop;
|
||||
DMA_transfer_handler transfer_handler;
|
||||
void *opaque;
|
||||
} I8257Regs;
|
||||
|
||||
typedef struct I8257State {
|
||||
/* <private> */
|
||||
ISADevice parent_obj;
|
||||
|
||||
/* <public> */
|
||||
int32_t base;
|
||||
int32_t page_base;
|
||||
int32_t pageh_base;
|
||||
int32_t dshift;
|
||||
|
||||
uint8_t status;
|
||||
uint8_t command;
|
||||
uint8_t mask;
|
||||
uint8_t flip_flop;
|
||||
I8257Regs regs[4];
|
||||
MemoryRegion channel_io;
|
||||
MemoryRegion cont_io;
|
||||
|
||||
QEMUBH *dma_bh;
|
||||
bool dma_bh_scheduled;
|
||||
int running;
|
||||
} I8257State;
|
||||
|
||||
#endif
|
||||
|
|
@ -34,6 +34,41 @@ static inline uint16_t applesmc_port(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define TYPE_ISADMA "isa-dma"
|
||||
|
||||
#define ISADMA_CLASS(klass) \
|
||||
OBJECT_CLASS_CHECK(IsaDmaClass, (klass), TYPE_ISADMA)
|
||||
#define ISADMA_GET_CLASS(obj) \
|
||||
OBJECT_GET_CLASS(IsaDmaClass, (obj), TYPE_ISADMA)
|
||||
#define ISADMA(obj) \
|
||||
INTERFACE_CHECK(IsaDma, (obj), TYPE_ISADMA)
|
||||
|
||||
struct IsaDma {
|
||||
Object parent;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
ISADMA_TRANSFER_VERIFY,
|
||||
ISADMA_TRANSFER_READ,
|
||||
ISADMA_TRANSFER_WRITE,
|
||||
ISADMA_TRANSFER_ILLEGAL,
|
||||
} IsaDmaTransferMode;
|
||||
|
||||
typedef struct IsaDmaClass {
|
||||
InterfaceClass parent;
|
||||
|
||||
IsaDmaTransferMode (*get_transfer_mode)(IsaDma *obj, int nchan);
|
||||
bool (*has_autoinitialization)(IsaDma *obj, int nchan);
|
||||
int (*read_memory)(IsaDma *obj, int nchan, void *buf, int pos, int len);
|
||||
int (*write_memory)(IsaDma *obj, int nchan, void *buf, int pos, int len);
|
||||
void (*hold_DREQ)(IsaDma *obj, int nchan);
|
||||
void (*release_DREQ)(IsaDma *obj, int nchan);
|
||||
void (*schedule)(IsaDma *obj);
|
||||
void (*register_channel)(IsaDma *obj, int nchan,
|
||||
DMA_transfer_handler transfer_handler,
|
||||
void *opaque);
|
||||
} IsaDmaClass;
|
||||
|
||||
typedef struct ISADeviceClass {
|
||||
DeviceClass parent_class;
|
||||
} ISADeviceClass;
|
||||
|
@ -46,6 +81,7 @@ struct ISABus {
|
|||
MemoryRegion *address_space;
|
||||
MemoryRegion *address_space_io;
|
||||
qemu_irq *irqs;
|
||||
IsaDma *dma[2];
|
||||
};
|
||||
|
||||
struct ISADevice {
|
||||
|
@ -63,6 +99,8 @@ ISABus *isa_bus_new(DeviceState *dev, MemoryRegion *address_space,
|
|||
void isa_bus_irqs(ISABus *bus, qemu_irq *irqs);
|
||||
qemu_irq isa_get_irq(ISADevice *dev, int isairq);
|
||||
void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq);
|
||||
void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16);
|
||||
IsaDma *isa_get_dma(ISABus *bus, int nchan);
|
||||
MemoryRegion *isa_address_space(ISADevice *dev);
|
||||
MemoryRegion *isa_address_space_io(ISADevice *dev);
|
||||
ISADevice *isa_create(ISABus *bus, const char *name);
|
||||
|
@ -106,15 +144,6 @@ static inline ISABus *isa_bus_from_device(ISADevice *d)
|
|||
return ISA_BUS(qdev_get_parent_bus(DEVICE(d)));
|
||||
}
|
||||
|
||||
/* dma.c */
|
||||
int DMA_get_channel_mode (int nchan);
|
||||
int DMA_read_memory (int nchan, void *buf, int pos, int size);
|
||||
int DMA_write_memory (int nchan, void *buf, int pos, int size);
|
||||
void DMA_hold_DREQ (int nchan);
|
||||
void DMA_release_DREQ (int nchan);
|
||||
void DMA_schedule(void);
|
||||
void DMA_init(int high_page_enable);
|
||||
void DMA_register_channel (int nchan,
|
||||
DMA_transfer_handler transfer_handler,
|
||||
void *opaque);
|
||||
/* i8257.c */
|
||||
void DMA_init(ISABus *bus, int high_page_enable);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue