Shame on me for havign to ask these questions but I couldn't find an answer, so here goes... How can I know what 'legacy' devices I have on a system? I'm talking about stuff like AIC, floppy disk controller, etc. (And please, don't answer "write generic drivers and/or assume"). Take for example the HPET, which is not compatible with PIT. As it's also on the ISA bus, I need to know for sure what I'm using (although I'm sure there might be hacks for this like using some feature and see if it had any effect or if it fires up an IRQ). I'm guessing it's the HAL's job, as from what I've gathered it's basically a motherboard driver. But do I really need to have a list of motherboards and legacy ISA controllers associated with each one or can I just see what controllers I have on that board? ISA is not as great as PCI.
Also, ... are ports for VGA, PIT, floppy disk controllers, etc. set by the BIOS or are they hardware hardwired? If the BIOS sets them, can they be changed after that or can they only be configured once after power-on?
Legacy ISA
- Love4Boobies
- Member
- Posts: 2111
- Joined: Fri Mar 07, 2008 5:36 pm
- Location: Bucharest, Romania
Legacy ISA
"Computers in the future may weigh no more than 1.5 tons.", Popular Mechanics (1949)
[ Project UDI ]
[ Project UDI ]
Re: Legacy ISA
Hi,
Some "ISA" devices (typically, devices built into the "PCI to LPC bridge" that emulate ISA devices, rather than actual ISA devices) are built into the motherboard, and on modern computers can be detected via. ACPI (although in practice ACPI is a huge pain in the neck). This mostly includes devices like the RTC, PIT, serial port, parallel port, the old DMA controllers, PIC, PS/2 controller, floppy controller, etc.
Some ISA devices support the "ISA Plug and Play" specification, which can be used to identify and configure them. Unfortunately the "ISA Plug and Play" specification and the corresponding "Plug and Play BIOS" specification wasn't released until after PCI was released (and PCI is much better), so most device manufacturers skipped "ISA Plug and Play" specification completely and went straight to PCI. You might find a sound card or ethernet card that supports it if you're lucky, but [<insert something about needles and haystacks here>].
Apart from those options, the only options left are manual probing and forcing users to write some sort of configuration script (e.g. like "config.sys" in DOS - something that says which device drivers to load and what resources the device/s use).
Mostly, it all depends on the device itself.
Cheers,
Brendan
Don't feel too bad - for most ISA devices there is no answer (no sane way to autodetect the device at all). In general the problem is that ISA devices existed before anyone expected operating systems to autodetect hardware.Love4Boobies wrote:Shame on me for havign to ask these questions but I couldn't find an answer, so here goes...
Some "ISA" devices (typically, devices built into the "PCI to LPC bridge" that emulate ISA devices, rather than actual ISA devices) are built into the motherboard, and on modern computers can be detected via. ACPI (although in practice ACPI is a huge pain in the neck). This mostly includes devices like the RTC, PIT, serial port, parallel port, the old DMA controllers, PIC, PS/2 controller, floppy controller, etc.
Some ISA devices support the "ISA Plug and Play" specification, which can be used to identify and configure them. Unfortunately the "ISA Plug and Play" specification and the corresponding "Plug and Play BIOS" specification wasn't released until after PCI was released (and PCI is much better), so most device manufacturers skipped "ISA Plug and Play" specification completely and went straight to PCI. You might find a sound card or ethernet card that supports it if you're lucky, but [<insert something about needles and haystacks here>].
Apart from those options, the only options left are manual probing and forcing users to write some sort of configuration script (e.g. like "config.sys" in DOS - something that says which device drivers to load and what resources the device/s use).
HPET is compatible with the PIT (typically the "PIT" is implemented as HPET emulating the PIT, where no actual PIT is present). The PIT isn't an ISA device, and can be detected by searching for a "ACPI 2.0 HPET Description Table" (or similar) in the ACPI tables.Love4Boobies wrote:Take for example the HPET, which is not compatible with PIT.
For some ISA devices (including video cards, PIT, etc) the resources are hardwired into the device. For some ISA devices (e.g. serial/parallel/FDC expansion cards, sound cards, etc) there's jumpers on the card itself that determine which resources it uses, but often there's a limited number of options (e.g. 2 jumpers that are set to one of 4 possible "base I/O ports"), and usually there's a default setting that's more common than others; which all makes it easier to detect using manual probing. For some devices (e.g. certain ethernet cards) the device itself has it's own proprietory method of setting resources.Love4Boobies wrote:Also, ... are ports for VGA, PIT, floppy disk controllers, etc. set by the BIOS or are they hardware hardwired? If the BIOS sets them, can they be changed after that or can they only be configured once after power-on?
Mostly, it all depends on the device itself.
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re: Legacy ISA
Also, some chipsets like the X58 can be set up to ignore the legacy VGA i/o ports and address space, or do what most people would expect and forward them on to the detected video card.