[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 14/16] fdc: add function to determine drive chs limit
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 14/16] fdc: add function to determine drive chs limits |
Date: |
Fri, 4 Mar 2016 09:49:58 +0200 |
From: Roman Kagan <address@hidden>
When populating ACPI objects for floppy drives one needs to provide the
maximum values for cylinder, sector, and head number the drive supports.
This patch adds a function that iterates through the array of predefined
floppy drive formats and returns the maximum values of c, h, s, out of
those matching the given floppy drive type.
Signed-off-by: Roman Kagan <address@hidden>
Cc: Igor Mammedov <address@hidden>
Cc: "Michael S. Tsirkin" <address@hidden>
Cc: Marcel Apfelbaum <address@hidden>
Cc: John Snow <address@hidden>
Cc: Laszlo Ersek <address@hidden>
Cc: Kevin O'Connor <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
Reviewed-by: John Snow <address@hidden>
---
include/hw/block/fdc.h | 2 ++
hw/block/fdc.c | 23 +++++++++++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/include/hw/block/fdc.h b/include/hw/block/fdc.h
index adce14f..1749dab 100644
--- a/include/hw/block/fdc.h
+++ b/include/hw/block/fdc.h
@@ -15,5 +15,7 @@ void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base,
DriveInfo **fds, qemu_irq *fdc_tc);
FloppyDriveType isa_fdc_get_drive_type(ISADevice *fdc, int i);
+void isa_fdc_get_drive_max_chs(FloppyDriveType type,
+ uint8_t *maxc, uint8_t *maxh, uint8_t *maxs);
#endif
diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 9838d21..fc3aef9 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -2557,6 +2557,29 @@ FloppyDriveType isa_fdc_get_drive_type(ISADevice *fdc,
int i)
return isa->state.drives[i].drive;
}
+void isa_fdc_get_drive_max_chs(FloppyDriveType type,
+ uint8_t *maxc, uint8_t *maxh, uint8_t *maxs)
+{
+ const FDFormat *fdf;
+
+ *maxc = *maxh = *maxs = 0;
+ for (fdf = fd_formats; fdf->drive != FLOPPY_DRIVE_TYPE_NONE; fdf++) {
+ if (fdf->drive != type) {
+ continue;
+ }
+ if (*maxc < fdf->max_track) {
+ *maxc = fdf->max_track;
+ }
+ if (*maxh < fdf->max_head) {
+ *maxh = fdf->max_head;
+ }
+ if (*maxs < fdf->last_sect) {
+ *maxs = fdf->last_sect;
+ }
+ }
+ (*maxc)--;
+}
+
static const VMStateDescription vmstate_isa_fdc ={
.name = "fdc",
.version_id = 2,
--
MST
- [Qemu-devel] [PULL 07/16] hw/virtio: group virtio flags into an enum, (continued)
- [Qemu-devel] [PULL 07/16] hw/virtio: group virtio flags into an enum, Michael S. Tsirkin, 2016/03/04
- [Qemu-devel] [PULL 08/16] virtio-balloon: export all balloon statistics, Michael S. Tsirkin, 2016/03/04
- [Qemu-devel] [PULL 09/16] virtio-balloon: add 'available' counter, Michael S. Tsirkin, 2016/03/04
- [Qemu-devel] [PULL 10/16] vhost-user: verify that number of queues is less than MAX_QUEUE_NUM, Michael S. Tsirkin, 2016/03/04
- [Qemu-devel] [PULL 11/16] pc-dimm: fix error handling in pc_dimm_check_memdev_is_busy(), Michael S. Tsirkin, 2016/03/04
- [Qemu-devel] [PULL 12/16] i386/acpi: make floppy controller object dynamic, Michael S. Tsirkin, 2016/03/04
- [Qemu-devel] [PULL 13/16] i386: expose floppy drive CMOS type, Michael S. Tsirkin, 2016/03/04
- [Qemu-devel] [PULL 15/16] i386: populate floppy drive information in DSDT, Michael S. Tsirkin, 2016/03/04
- [Qemu-devel] [PULL 14/16] fdc: add function to determine drive chs limits,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 16/16] i386: update expected DSDT, Michael S. Tsirkin, 2016/03/04
- Re: [Qemu-devel] [PULL 00/16] vhost, virtio, pci, pc, acpi, Fam Zheng, 2016/03/04