isa_fdc_get_drive_type() is needed by pc machine types when setting up the cmos.
Move to separate source file so we can keep it in core qemu when building floppy as module. Signed-off-by: Gerd Hoffmann <kra...@redhat.com> --- hw/block/fdc-internal.h | 16 ++++++++++++++++ hw/block/fdc-isa.c | 22 ---------------------- hw/block/fdc-module.c | 39 +++++++++++++++++++++++++++++++++++++++ hw/block/meson.build | 1 + 4 files changed, 56 insertions(+), 22 deletions(-) create mode 100644 hw/block/fdc-module.c diff --git a/hw/block/fdc-internal.h b/hw/block/fdc-internal.h index 036392e9fc10..a74cd5e4b9f2 100644 --- a/hw/block/fdc-internal.h +++ b/hw/block/fdc-internal.h @@ -29,6 +29,7 @@ #include "exec/ioport.h" #include "hw/block/block.h" #include "hw/block/fdc.h" +#include "hw/isa/isa.h" #include "qapi/qapi-types-block.h" typedef struct FDCtrl FDCtrl; @@ -143,6 +144,21 @@ struct FDCtrl { PortioList portio_list; }; +OBJECT_DECLARE_SIMPLE_TYPE(FDCtrlISABus, ISA_FDC) + +struct FDCtrlISABus { + /*< private >*/ + ISADevice parent_obj; + /*< public >*/ + + uint32_t iobase; + uint32_t irq; + uint32_t dma; + struct FDCtrl state; + int32_t bootindexA; + int32_t bootindexB; +}; + extern const FDFormat fd_formats[]; extern const VMStateDescription vmstate_fdc; diff --git a/hw/block/fdc-isa.c b/hw/block/fdc-isa.c index 3bf64e06657b..dd7e1669f862 100644 --- a/hw/block/fdc-isa.c +++ b/hw/block/fdc-isa.c @@ -49,21 +49,6 @@ #include "qom/object.h" #include "fdc-internal.h" -OBJECT_DECLARE_SIMPLE_TYPE(FDCtrlISABus, ISA_FDC) - -struct FDCtrlISABus { - /*< private >*/ - ISADevice parent_obj; - /*< public >*/ - - uint32_t iobase; - uint32_t irq; - uint32_t dma; - struct FDCtrl state; - int32_t bootindexA; - int32_t bootindexB; -}; - static void fdctrl_external_reset_isa(DeviceState *d) { FDCtrlISABus *isa = ISA_FDC(d); @@ -117,13 +102,6 @@ static void isabus_fdc_realize(DeviceState *dev, Error **errp) } } -FloppyDriveType isa_fdc_get_drive_type(ISADevice *fdc, int i) -{ - FDCtrlISABus *isa = ISA_FDC(fdc); - - return isa->state.drives[i].drive; -} - static void isa_fdc_get_drive_max_chs(FloppyDriveType type, uint8_t *maxc, uint8_t *maxh, uint8_t *maxs) { diff --git a/hw/block/fdc-module.c b/hw/block/fdc-module.c new file mode 100644 index 000000000000..93953bf0aa57 --- /dev/null +++ b/hw/block/fdc-module.c @@ -0,0 +1,39 @@ +/* + * QEMU Floppy disk emulator (Intel 82078) + * + * Some small helper functions which must be built into core qemu when + * building floppy as module. + * + * Copyright (c) 2003, 2007 Jocelyn Mayer + * Copyright (c) 2008 Hervé Poussineau + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "qemu/osdep.h" +#include "hw/isa/isa.h" +#include "hw/block/fdc.h" +#include "fdc-internal.h" + +FloppyDriveType isa_fdc_get_drive_type(ISADevice *fdc, int i) +{ + FDCtrlISABus *isa = ISA_FDC(fdc); + + return isa->state.drives[i].drive; +} diff --git a/hw/block/meson.build b/hw/block/meson.build index 2389326112ae..8460042fe320 100644 --- a/hw/block/meson.build +++ b/hw/block/meson.build @@ -4,6 +4,7 @@ softmmu_ss.add(files( 'hd-geometry.c' )) softmmu_ss.add(when: 'CONFIG_ECC', if_true: files('ecc.c')) +softmmu_ss.add(when: 'CONFIG_FDC', if_true: files('fdc-module.c')) softmmu_ss.add(when: 'CONFIG_FDC', if_true: files('fdc.c')) softmmu_ss.add(when: 'CONFIG_FDC_ISA', if_true: files('fdc-isa.c')) softmmu_ss.add(when: 'CONFIG_FDC_SYSBUS', if_true: files('fdc-sysbus.c')) -- 2.31.1