Hi edk2 community, it's been a while.

We have a situation where we need to use instances of the SERIAL_IO_PROTOCOL to 
talk to hardware devices that are not part of a console.  As written today 
TerminalDxe's driver binding will consume any handle that implements the 
SERIAL_IO_PROTOCOL (like in a BDS connect-all case).  Clearly this is 
problematic when the device on the other side is not a terminal.  

The UEFI Specification does not limit the Serial IO protocol to 
console/terminal only applications yet the edk2 implementation of TerminalDxe 
effectively does this.

I'm looking for some advice on how to resolve this.

I think it's important for the BDS connect-all case to keep working so I don't 
think customizing the driver connect process at a BDS level is a good solution.

The UEFI Driver Binding architecture has a capable precedence system for 
determining which drivers get to control which devices (binding versioning, bus 
overrides, platform overrides) but I don't think this a proper use of the 
system since I understand that this system was intended for choosing the better 
of two possible drivers for the hardware (like a motherboard versus option rom 
for the same PCI network adapter).  In this case having TerminalDxe trying to 
connect to a non-terminal device isn't slightly worse, it's broken.  

We need a way to differentiate serial port types in the connect process.  Since 
the Serial IO protocol can't be used to detect what's on the other side we need 
to get the information from the platform with it having a list like:

Serial 0: console
Serial 1: fax
Serial 2: keyboard
Serial 3: mouse
Serial 4: console

so we would only want TerminalDxe to connect to instance 0 and 4 and leave the 
others alone.

Any ideas on how to best do this?

Thanks,

Eugene


_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to