SeaBIOS can be used for booting legacy OS and also Linux is still using CMOS address 0x10 to configure floppy controller. Under these assumptions it makes sense to allow boot from CMOS defined floppy drives.
Signed-off-by: Petr Cvek petrcvekcz@gmail.com --- src/Kconfig | 7 +++++++ src/hw/floppy.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/Kconfig b/src/Kconfig index 3a8ffa1..42b9614 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -227,6 +227,13 @@ menu "Hardware support" default y help Support floppy drive access. + config LEGACY_FLOPPY + depends on FLOPPY && COREBOOT + bool "Get floppy type from CMOS" + default n + help + Support boot from CMOS defined floppy. Used by legacy OSes + on IBM PC compatible machine under coreboot. config FLASH_FLOPPY depends on DRIVES bool "Floppy images from CBFS or fw_cfg" diff --git a/src/hw/floppy.c b/src/hw/floppy.c index 9e6647d..40af360 100644 --- a/src/hw/floppy.c +++ b/src/hw/floppy.c @@ -155,7 +155,7 @@ floppy_setup(void) return; dprintf(3, "init floppy drives\n");
- if (CONFIG_QEMU) { + if (CONFIG_QEMU || CONFIG_LEGACY_FLOPPY) { u8 type = rtc_read(CMOS_FLOPPY_DRIVE_TYPE); if (type & 0xf0) addFloppy(0, type >> 4);
On Wed, Jul 13, 2022 at 03:24:49AM +0200, Petr Cvek wrote:
SeaBIOS can be used for booting legacy OS and also Linux is still using CMOS address 0x10 to configure floppy controller. Under these assumptions it makes sense to allow boot from CMOS defined floppy drives.
There was never really a standard for the layout of CMOS nor for the encoding of floppy type. Currently, SeaBIOS doesn't use CMOS for anything when configured for coreboot mode and I think we should keep it that way. If you have a machine with a floppy drive that you'd like to use with coorboot+SeaBIOS then you can set the "etc/floppy0" or "etc/floppy1" cbfs files to activate support in SeaBIOS.
-Kevin
Kevin O'Connor wrote:
SeaBIOS can be used for booting legacy OS and also Linux is still using CMOS address 0x10 to configure floppy controller. Under these assumptions it makes sense to allow boot from CMOS defined floppy drives.
There was never really a standard for the layout of CMOS nor for the encoding of floppy type.
Ralf Brown's interrupt list disagrees:
--8<-- CMOS.LST ----------R10-------------------------------- CMOS 10h - IBM - FLOPPY DRIVE TYPE Note: a PC having a 5 1/4 1.2 Mb A: drive and a 1.44 Mb B: drive will have a value of 24h in byte 10h. With a single 1.44 drive: 40h.
Bitfields for floppy drives A/B types: Bit(s) Description (Table C0007) 7-4 first floppy disk drive type (see #C0008) 3-0 second floppy disk drive type (see #C0008)
(Table C0008) Values for floppy drive type: 00h no drive 01h 360 KB 5.25 Drive 02h 1.2 MB 5.25 Drive - note: not listed in PS/2 technical manual 03h 720 KB 3.5 Drive 04h 1.44 MB 3.5 Drive 05h 2.88 MB 3.5 drive 06h-0Fh unused SeeAlso: #C0007 -->8--
Currently, SeaBIOS doesn't use CMOS for anything when configured for coreboot mode and I think we should keep it that way.
The first either 15 or 48 bytes are explicitly reserved on all coreboot mainboards and coreboot checksums bytes 16-45 when built to use an option table.
If you have a machine with a floppy drive that you'd like to use with coorboot+SeaBIOS then you can set the "etc/floppy0" or "etc/floppy1" cbfs files to activate support in SeaBIOS.
That's fine, but why reject the de-facto standard method?
Kind regards
//Peter
Dne 06. 08. 22 v 19:30 Peter Stuge napsal(a):
Kevin O'Connor wrote:
SeaBIOS can be used for booting legacy OS and also Linux is still using CMOS address 0x10 to configure floppy controller. Under these assumptions it makes sense to allow boot from CMOS defined floppy drives.
There was never really a standard for the layout of CMOS nor for the encoding of floppy type.
Ralf Brown's interrupt list disagrees:
--8<-- CMOS.LST ----------R10-------------------------------- CMOS 10h - IBM - FLOPPY DRIVE TYPE Note: a PC having a 5 1/4 1.2 Mb A: drive and a 1.44 Mb B: drive will have a value of 24h in byte 10h. With a single 1.44 drive: 40h.
Bitfields for floppy drives A/B types: Bit(s) Description (Table C0007) 7-4 first floppy disk drive type (see #C0008) 3-0 second floppy disk drive type (see #C0008)
(Table C0008) Values for floppy drive type: 00h no drive 01h 360 KB 5.25 Drive 02h 1.2 MB 5.25 Drive - note: not listed in PS/2 technical manual 03h 720 KB 3.5 Drive 04h 1.44 MB 3.5 Drive 05h 2.88 MB 3.5 drive 06h-0Fh unused SeeAlso: #C0007 -->8--
I agree, these will be probably used by older OSes and having the floppy type to be able to change without reflashing is definitely useful.
Currently, SeaBIOS doesn't use CMOS for anything when configured for coreboot mode and I think we should keep it that way.
The first either 15 or 48 bytes are explicitly reserved on all coreboot mainboards and coreboot checksums bytes 16-45 when built to use an option table.
If you have a machine with a floppy drive that you'd like to use with coorboot+SeaBIOS then you can set the "etc/floppy0" or "etc/floppy1" cbfs files to activate support in SeaBIOS.
That's fine, but why reject the de-facto standard method?
Also few other bytes (14h) in this range could be used by legacy OSes too.
Kind regards
//Peter _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-leave@seabios.org