qemu/include/hw/isa/superio.h
<<
>>
Prefs
   1/*
   2 * Generic ISA Super I/O
   3 *
   4 * Copyright (c) 2018 Philippe Mathieu-Daudé
   5 *
   6 * This work is licensed under the terms of the GNU GPL, version 2 or later.
   7 * See the COPYING file in the top-level directory.
   8 * SPDX-License-Identifier: GPL-2.0-or-later
   9 */
  10#ifndef HW_ISA_SUPERIO_H
  11#define HW_ISA_SUPERIO_H
  12
  13#include "sysemu/sysemu.h"
  14#include "hw/isa/isa.h"
  15#include "qom/object.h"
  16
  17#define TYPE_ISA_SUPERIO "isa-superio"
  18typedef struct ISASuperIOClass ISASuperIOClass;
  19typedef struct ISASuperIODevice ISASuperIODevice;
  20DECLARE_OBJ_CHECKERS(ISASuperIODevice, ISASuperIOClass,
  21                     ISA_SUPERIO, TYPE_ISA_SUPERIO)
  22
  23#define SUPERIO_MAX_SERIAL_PORTS 4
  24
  25struct ISASuperIODevice {
  26    /*< private >*/
  27    ISADevice parent_obj;
  28    /*< public >*/
  29
  30    ISADevice *parallel[MAX_PARALLEL_PORTS];
  31    ISADevice *serial[SUPERIO_MAX_SERIAL_PORTS];
  32    ISADevice *floppy;
  33    ISADevice *kbc;
  34    ISADevice *ide;
  35};
  36
  37typedef struct ISASuperIOFuncs {
  38    size_t count;
  39    bool (*is_enabled)(ISASuperIODevice *sio, uint8_t index);
  40    uint16_t (*get_iobase)(ISASuperIODevice *sio, uint8_t index);
  41    unsigned int (*get_irq)(ISASuperIODevice *sio, uint8_t index);
  42    unsigned int (*get_dma)(ISASuperIODevice *sio, uint8_t index);
  43} ISASuperIOFuncs;
  44
  45struct ISASuperIOClass {
  46    /*< private >*/
  47    ISADeviceClass parent_class;
  48    /*< public >*/
  49    DeviceRealize parent_realize;
  50
  51    ISASuperIOFuncs parallel;
  52    ISASuperIOFuncs serial;
  53    ISASuperIOFuncs floppy;
  54    ISASuperIOFuncs ide;
  55};
  56
  57#define TYPE_FDC37M81X_SUPERIO  "fdc37m81x-superio"
  58#define TYPE_SMC37C669_SUPERIO  "smc37c669-superio"
  59
  60#endif /* HW_ISA_SUPERIO_H */
  61