public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Nate DeSimone" <nathaniel.l.desimone@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	"tigerliu@zhaoxin.com" <tigerliu@zhaoxin.com>
Subject: Re: [edk2-devel] IsaBus driver's usage
Date: Fri, 29 May 2020 07:07:43 +0000	[thread overview]
Message-ID: <BL0PR11MB348963DF4A265E7AAE52FA3BCD8F0@BL0PR11MB3489.namprd11.prod.outlook.com> (raw)
In-Reply-To: <9Nti.1590652694541804505.RvYy@groups.io>

[-- Attachment #1: Type: text/plain, Size: 2673 bytes --]

Hi Tiger,

I believe you are assuming that IsaBusDxe and SioDxe do the same thing, that is not the case. These two drivers are actually very different they do very different things.

Consider a 15 year old PC. Most PC’s from that era had an ICH (the older terminology for PCH) with both parallel PCI and LPC controllers. A consequence of this design is legacy PCI supported subtractive decoding… which allowed OEMs to build systems with a PCI-to-ISA bridge device installed on the PCI bus… making it possible to build motherboards with ISA slots. This introduced one difficulty however, the LPC controller in the PCH is also a PCI-to-ISA bridge device, so you ended up having 2 PCI-to-ISA bridges in the system! Lets say your LPC bus has a Super I/O chip with a COM port, what happens if the user plugs a ISA serial card into an ISA slot? Does I/O port 0x3F8 get routed to the LPC controller or to the PCI controller? That is what IsaBusDxe is for, it arbitrates between multiple PCI-to-ISA bridges.

About 10 years ago, the parallel PCI bus was removed, however at the same time a “Subtractive Decode Agent” was added to the PCH that allowed a single PCIe root port to be designated as being capable of subtractive decode. This allowed OEMs to build systems with a PCIe-to-PCI bridge… connected to a PCI-to-ISA bridge and still technically build systems with ISA slots. Starting with Sky Lake however, the subtractive decode agent was removed, which finally broke compatibility with the 1981 IBM PC. After Sky Lake, there can only be one PCI-to-ISA bridge in the system, the LPC controller. So there hasn’t really been a need for the arbitration driver anymore.

SioDxe on the other hand is a generic Super I/O driver. Most new PCs today still have vestigial remnants of the Super I/O as part of their EC (embedded controller.) Specifically, most ECs support both the PS/2 and serial COM ports that were once part of Super I/O chips. Most ECs use PS/2 as the interface for the scan matrix keyboard on laptops. SioDxe provides the protocols that allow PciSioSerialDxe and Ps2KeyboardDxe to use these EC functions.

Thanks,
Nate

From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Tiger Liu(BJ-RD)
Sent: Thursday, May 28, 2020 12:58 AM
To: devel@edk2.groups.io
Subject: [edk2-devel] IsaBus driver's usage

Hi, expert:
I have a question about IsaBus driver.

There is a isa bus driver in MdeModulePkg\Bus\Isa\IsaBusDxe.
But i find nobody use it anymore.

Based on current edk2-platform samples, they just use SioDxe driver plus Ps2Keyboard driver, not use IsaBus driver anymore.

So when to use IsaBus driver?

Thanks


[-- Attachment #2: Type: text/html, Size: 5808 bytes --]

  parent reply	other threads:[~2020-05-29  7:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-28  7:58 [edk2-devel] IsaBus driver's usage Tiger Liu(BJ-RD)
2020-05-28  8:27 ` Philippe Mathieu-Daudé
2020-05-29 16:16   ` Agyeman, Prince
2020-05-29  7:07 ` Nate DeSimone [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-06-08  7:19 Tiger Liu(BJ-RD)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BL0PR11MB348963DF4A265E7AAE52FA3BCD8F0@BL0PR11MB3489.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox