#ifndef HW_FDC_H
#define HW_FDC_H

#include "isa.h"
#include "blockdev.h"

/* fdc.c */
#define MAX_FD 2

static inline ISADevice *fdctrl_init_isa(ISABus *bus, DriveInfo **fds)
{
    ISADevice *dev;

    dev = isa_try_create(bus, "isa-fdc");
    if (!dev) {
        return NULL;
    }

    if (fds[0]) {
        qdev_prop_set_drive_nofail(&dev->qdev, "driveA", fds[0]->bdrv);
    }
    if (fds[1]) {
        qdev_prop_set_drive_nofail(&dev->qdev, "driveB", fds[1]->bdrv);
    }
    qdev_init_nofail(&dev->qdev);

    return dev;
}

void fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
                        target_phys_addr_t mmio_base, DriveInfo **fds);
void sun4m_fdctrl_init(qemu_irq irq, target_phys_addr_t io_base,
                       DriveInfo **fds, qemu_irq *fdc_tc);
void fdc_get_bs(BlockDriverState *bs[], ISADevice *dev);

#endif
