pci_dev_free free;
pci_dev_reset reset;
pci_dev_hsync hsync;
- pci_dev_irq irq;
pci_addrbank bars[MAX_PCI_BARS];
};
bool memory_map_active;
bool io_map_active;
struct pci_bridge *bridge;
+ pci_dev_irq irq_callback;
};
struct pci_bridge
pcibs->slot = slot;
pcibs->func = func;
pcibs->bridge = pcib;
+ pcibs->irq_callback = pci_irq_callback;
memset(pcibs->config_data, 0, sizeof pcibs->config_data);
for (int i = 0; i < MAX_PCI_BARS; i++) {
pcibs->bar_size[i] = pci->config->bars[i];
static const struct pci_board ncr_53c815_pci_board =
{
_T("NCR53C815"),
- &ncr_53c815_pci_config, NULL, NULL, NULL, NULL, pci_irq_callback,
+ &ncr_53c815_pci_config, NULL, NULL, NULL, NULL,
{
{ wildfire_lget, wildfire_wget, wildfire_bget, wildfire_lput, wildfire_wput, wildfire_bput },
{ wildfire_lget, wildfire_wget, wildfire_bget, wildfire_lput, wildfire_wput, wildfire_bput },
uint32_t mempage;
uint32_t codec;
uint32_t sctl;
+ pci_dev_irq irq_callback;
} ES1370State;
struct chan_bits {
} else {
s->status = new_status & ~STAT_INTR;
}
- es1370state.device->irq(es1370state.dev, !!level);
+ es1370state.irq_callback(es1370state.dev, !!level);
// pci_set_irq(&s->dev, !!level);
}
s->dac_voice[i] = NULL;
}
}
- es1370state.device->irq(es1370state.dev, false);
+ es1370state.irq_callback(es1370state.dev, false);
// pci_irq_deassert(&s->dev);
}
{
init(pcibs);
es1370_reset(&es1370state);
+ es1370state.irq_callback = pcibs->irq_callback;
return true;
}
const struct pci_board es1370_pci_board =
{
_T("ES1370"),
- &es1370_pci_config, es1370_init, es1370_free, es1370_reset, NULL, pci_irq_callback,
+ &es1370_pci_config, es1370_init, es1370_free, es1370_reset, NULL,
{
{ es1370_lget, es1370_wget, es1370_bget, es1370_lput, es1370_wput, es1370_bput },
{ NULL },
write_log("NE2000: Set IRQ to %d (%02x %02x)\n",
isr ? 1 : 0, s->isr, s->imr);
#endif
- ncs.device->irq(ncs.pcistate, isr != 0);
+ s->irq_callback(ncs.pcistate, isr != 0);
// qemu_set_irq(s->irq, (isr != 0));
}
ncs.pcistate = pcibs;
ncs.ne2000state = &ne2000state;
memset(&ne2000state, 0, sizeof ne2000state);
+ ncs.ne2000state->irq_callback = pcibs->irq_callback;
uae_sem_init(&ne2000_sem, 0, 1);
if (!receive_buffer) {
td = NULL;
uae_u8 *m = ncs.ne2000state->c.macaddr.a;
+ const TCHAR *name = currprefs.ne2000pciname[0] ? currprefs.ne2000pciname : currprefs.ne2000pcmcianame; // hack!
memset(m, 0, 6);
- if (ethernet_enumerate(&td, currprefs.ne2000pciname)) {
+ if (ethernet_enumerate(&td, name)) {
memcpy(m, td->mac, 6);
if (!m[0] && !m[1] && !m[2]) {
m[0] = 0x52;
const struct pci_board ne2000_pci_board =
{
_T("RTL8029"),
- &ne2000_pci_config, ne2000_init, ne2000_free, ne2000_reset, ne2000_hsync_handler, pci_irq_callback,
+ &ne2000_pci_config, ne2000_init, ne2000_free, ne2000_reset, ne2000_hsync_handler,
{
{ ne2000_lget, ne2000_wget, ne2000_bget, ne2000_lput, ne2000_wput, ne2000_bput },
{ NULL },
//NICState *nic;
NICConf c;
uint8_t mem[NE2000_MEM_SIZE];
+ pci_dev_irq irq_callback;
} NE2000State;
#if 0
capture_read_index = 0;
}
- write_log(_T("%d %d %d %d\n"), capture_read_index, capture_write_index, size, bytes);
+ //write_log(_T("%d %d %d %d\n"), capture_read_index, capture_write_index, size, bytes);
if (data->data_in_record_fifo > FIFO_SIZE_HALF && oldfifo <= FIFO_SIZE_HALF) {
data->fifo_half |= STATUS_FIFO_RECORD;
static void fm801_interrupt(struct fm801_data *data)
{
if ((data->interrupt_status & 0x100) && !(data->interrupt_control & 1)) {
- data->pcibs->board->irq(data->pcibs, true);
+ data->pcibs->irq_callback(data->pcibs, true);
} else {
- data->pcibs->board->irq(data->pcibs, false);
+ data->pcibs->irq_callback(data->pcibs, false);
}
}
const struct pci_board fm801_pci_board =
{
_T("FM801"),
- &fm801_pci_config, fm801_init, fm801_free, fm801_reset, fm801_hsync_handler, pci_irq_callback,
+ &fm801_pci_config, fm801_init, fm801_free, fm801_reset, fm801_hsync_handler,
{
{ fm801_lget, fm801_wget, fm801_bget, fm801_lput, fm801_wput, fm801_bput },
{ NULL },
const struct pci_board fm801_pci_board_func1 =
{
_T("FM801-2"),
- &fm801_pci_config_func1, NULL, NULL, NULL, NULL, NULL,
+ &fm801_pci_config_func1, NULL, NULL, NULL, NULL,
{
{ fm801_lget, fm801_wget, fm801_bget, fm801_lput, fm801_wput, fm801_bput },
{ NULL },
const struct pci_board solo1_pci_board =
{
_T("SOLO1"),
- &solo1_pci_config, solo1_init, solo1_free, solo1_reset, NULL, pci_irq_callback,
+ &solo1_pci_config, solo1_init, solo1_free, solo1_reset, NULL,
{
{ solo1_lget, solo1_wget, solo1_bget, solo1_lput, solo1_wput, solo1_bput },
{ solo1_lget, solo1_wget, solo1_bget, solo1_lput, solo1_wput, solo1_bput },