Revision a06e5a3c
b/hw/fdc.c | ||
---|---|---|
396 | 396 |
/* Power down config (also with status regB access mode */ |
397 | 397 |
uint8_t pwrd; |
398 | 398 |
/* Sun4m quirks? */ |
399 |
int sun; |
|
399 |
int sun4m;
|
|
400 | 400 |
/* Floppy drives */ |
401 | 401 |
fdrive_t drives[2]; |
402 | 402 |
}; |
... | ... | |
408 | 408 |
|
409 | 409 |
switch (reg & 0x07) { |
410 | 410 |
case 0x00: |
411 |
if (fdctrl->sun) { |
|
411 |
if (fdctrl->sun4m) {
|
|
412 | 412 |
// Identify to Linux as S82078B |
413 | 413 |
retval = fdctrl_read_statusB(fdctrl); |
414 | 414 |
} else { |
... | ... | |
602 | 602 |
fdctrl->dma_chann = dma_chann; |
603 | 603 |
fdctrl->io_base = io_base; |
604 | 604 |
fdctrl->config = 0x60; /* Implicit seek, polling & FIFO enabled */ |
605 |
fdctrl->sun = 0; |
|
605 |
fdctrl->sun4m = 0;
|
|
606 | 606 |
if (fdctrl->dma_chann != -1) { |
607 | 607 |
fdctrl->dma_en = 1; |
608 | 608 |
DMA_register_channel(dma_chann, &fdctrl_transfer_handler, fdctrl); |
... | ... | |
642 | 642 |
fdctrl_t *fdctrl; |
643 | 643 |
|
644 | 644 |
fdctrl = fdctrl_init(irq, 0, 1, io_base, fds); |
645 |
fdctrl->sun = 1; |
|
645 |
fdctrl->sun4m = 1;
|
|
646 | 646 |
|
647 | 647 |
return fdctrl; |
648 | 648 |
} |
... | ... | |
664 | 664 |
static void fdctrl_raise_irq (fdctrl_t *fdctrl, uint8_t status) |
665 | 665 |
{ |
666 | 666 |
// Sparc mutation |
667 |
if (fdctrl->sun && !fdctrl->dma_en) { |
|
667 |
if (fdctrl->sun4m && !fdctrl->dma_en) {
|
|
668 | 668 |
fdctrl->state &= ~FD_CTRL_BUSY; |
669 | 669 |
fdctrl->int_status = status; |
670 | 670 |
return; |
Also available in: Unified diff