//\r
TimeOut = 0;\r
Msr.Data = READ_MSR (SerialDevice->IsaIo, SerialDevice->BaseAddress);\r
- while (Msr.Bits.Dcd == 1 && (!Msr.Bits.Cts ^ FeaturePcdGet(PcdIsaBusSerialUseHalfHandshake))) {\r
+ while ((Msr.Bits.Dcd == 1) && ((Msr.Bits.Cts == 0) || FeaturePcdGet(PcdIsaBusSerialUseHalfHandshake))) {\r
gBS->Stall (TIMEOUT_STALL_INTERVAL);\r
TimeOut++;\r
if (TimeOut > 5) {\r
Msr.Data = READ_MSR (SerialDevice->IsaIo, SerialDevice->BaseAddress);\r
}\r
\r
- if (Msr.Bits.Dcd== 0 || (Msr.Bits.Cts ^ FeaturePcdGet(PcdIsaBusSerialUseHalfHandshake))) {\r
+ if ((Msr.Bits.Dcd == 0) && ((Msr.Bits.Cts == 1) || FeaturePcdGet(PcdIsaBusSerialUseHalfHandshake))) {\r
IsaSerialFifoRemove (&SerialDevice->Transmit, &Data);\r
WRITE_THR (SerialDevice->IsaIo, SerialDevice->BaseAddress, Data);\r
}\r
if ((StopBits < OneStopBit) || (StopBits > TwoStopBits)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
- //\r
- // for DataBits = 5, StopBits can not set TwoStopBits\r
- //\r
- // if ((DataBits == 5) && (StopBits == TwoStopBits)) {\r
- // return EFI_INVALID_PARAMETER;\r
- // }\r
+\r
//\r
// for DataBits = 6,7,8, StopBits can not set OneFiveStopBits\r
//\r