ide: Get rid of CMD646BAR struct

Now that no CMD646 specific parts are left in CMD646BAR (all remaining
members are really PCI IDE specific) this struct can be deleted moving
the memory regions for PCI IDE BARs to PCIIDEState where they better
belong. The CMD646 PCI IDE model is adjusted accordingly.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: John Snow <jsnow@redhat.com>
Message-id: 4b6cb2ae150dc0d21178209e4beb1e35140a7325.1547166960.git.balaton@eik.bme.hu
Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
BALATON Zoltan 2019-01-25 14:52:11 -05:00 committed by John Snow
parent c9ebc75dc2
commit 8ac98d1a97
2 changed files with 18 additions and 25 deletions

View File

@ -50,17 +50,6 @@
static void cmd646_update_irq(PCIDevice *pd); static void cmd646_update_irq(PCIDevice *pd);
static void setup_cmd646_bar(PCIIDEState *d, int bus_num)
{
IDEBus *bus = &d->bus[bus_num];
CMD646BAR *bar = &d->cmd646_bar[bus_num];
memory_region_init_io(&bar->cmd, OBJECT(d), &pci_ide_cmd_le_ops, bus,
"cmd646-cmd", 4);
memory_region_init_io(&bar->data, OBJECT(d), &pci_ide_data_le_ops, bus,
"cmd646-data", 8);
}
static void cmd646_update_dma_interrupts(PCIDevice *pd) static void cmd646_update_dma_interrupts(PCIDevice *pd)
{ {
/* Sync DMA interrupt status from UDMA interrupt status */ /* Sync DMA interrupt status from UDMA interrupt status */
@ -277,12 +266,22 @@ static void pci_cmd646_ide_realize(PCIDevice *dev, Error **errp)
dev->wmask[MRDMODE] = 0x0; dev->wmask[MRDMODE] = 0x0;
dev->w1cmask[MRDMODE] = MRDMODE_INTR_CH0 | MRDMODE_INTR_CH1; dev->w1cmask[MRDMODE] = MRDMODE_INTR_CH0 | MRDMODE_INTR_CH1;
setup_cmd646_bar(d, 0); memory_region_init_io(&d->data_bar[0], OBJECT(d), &pci_ide_data_le_ops,
setup_cmd646_bar(d, 1); &d->bus[0], "cmd646-data0", 8);
pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &d->cmd646_bar[0].data); pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &d->data_bar[0]);
pci_register_bar(dev, 1, PCI_BASE_ADDRESS_SPACE_IO, &d->cmd646_bar[0].cmd);
pci_register_bar(dev, 2, PCI_BASE_ADDRESS_SPACE_IO, &d->cmd646_bar[1].data); memory_region_init_io(&d->cmd_bar[0], OBJECT(d), &pci_ide_cmd_le_ops,
pci_register_bar(dev, 3, PCI_BASE_ADDRESS_SPACE_IO, &d->cmd646_bar[1].cmd); &d->bus[0], "cmd646-cmd0", 4);
pci_register_bar(dev, 1, PCI_BASE_ADDRESS_SPACE_IO, &d->cmd_bar[0]);
memory_region_init_io(&d->data_bar[1], OBJECT(d), &pci_ide_data_le_ops,
&d->bus[1], "cmd646-data1", 8);
pci_register_bar(dev, 2, PCI_BASE_ADDRESS_SPACE_IO, &d->data_bar[1]);
memory_region_init_io(&d->cmd_bar[1], OBJECT(d), &pci_ide_cmd_le_ops,
&d->bus[1], "cmd646-cmd1", 4);
pci_register_bar(dev, 3, PCI_BASE_ADDRESS_SPACE_IO, &d->cmd_bar[1]);
bmdma_setup_bar(d); bmdma_setup_bar(d);
pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, &d->bmdma_bar); pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, &d->bmdma_bar);

View File

@ -37,11 +37,6 @@ typedef struct BMDMAState {
struct PCIIDEState *pci_dev; struct PCIIDEState *pci_dev;
} BMDMAState; } BMDMAState;
typedef struct CMD646BAR {
MemoryRegion cmd;
MemoryRegion data;
} CMD646BAR;
#define TYPE_PCI_IDE "pci-ide" #define TYPE_PCI_IDE "pci-ide"
#define PCI_IDE(obj) OBJECT_CHECK(PCIIDEState, (obj), TYPE_PCI_IDE) #define PCI_IDE(obj) OBJECT_CHECK(PCIIDEState, (obj), TYPE_PCI_IDE)
@ -54,17 +49,16 @@ typedef struct PCIIDEState {
BMDMAState bmdma[2]; BMDMAState bmdma[2];
uint32_t secondary; /* used only for cmd646 */ uint32_t secondary; /* used only for cmd646 */
MemoryRegion bmdma_bar; MemoryRegion bmdma_bar;
CMD646BAR cmd646_bar[2]; /* used only for cmd646 */ MemoryRegion cmd_bar[2];
MemoryRegion data_bar[2];
} PCIIDEState; } PCIIDEState;
static inline IDEState *bmdma_active_if(BMDMAState *bmdma) static inline IDEState *bmdma_active_if(BMDMAState *bmdma)
{ {
assert(bmdma->bus->retry_unit != (uint8_t)-1); assert(bmdma->bus->retry_unit != (uint8_t)-1);
return bmdma->bus->ifs + bmdma->bus->retry_unit; return bmdma->bus->ifs + bmdma->bus->retry_unit;
} }
void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEState *d); void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEState *d);
void bmdma_cmd_writeb(BMDMAState *bm, uint32_t val); void bmdma_cmd_writeb(BMDMAState *bm, uint32_t val);
extern MemoryRegionOps bmdma_addr_ioport_ops; extern MemoryRegionOps bmdma_addr_ioport_ops;