git: cb2da74905c1 - main - stand: eficom: Don't preemtively assume flow control
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 11 May 2023 20:06:51 UTC
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=cb2da74905c1cf6e0cc1d91f347030fa1e12cc81
commit cb2da74905c1cf6e0cc1d91f347030fa1e12cc81
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2023-05-11 20:03:51 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2023-05-11 20:06:03 +0000
stand: eficom: Don't preemtively assume flow control
Remove rtsdtr_off. It's basically unused. Expand its meaning, but put
changing flow control to under an ifdef. We shouldn't set it unless
we're sure we need to do so. UEFI normally initializes the device
correctly, and we should avoid needless changes that aren't user
requested.
Sponsored by: Netflix
Reviewed by: tsoome
Differential Revision: https://reviews.freebsd.org/D40009
---
stand/efi/libefi/eficom.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/stand/efi/libefi/eficom.c b/stand/efi/libefi/eficom.c
index 8d14209f8484..b0fc0d8fbf6a 100644
--- a/stand/efi/libefi/eficom.c
+++ b/stand/efi/libefi/eficom.c
@@ -47,7 +47,6 @@ struct serial {
uint32_t databits;
EFI_PARITY_TYPE parity;
EFI_STOP_BITS_TYPE stopbits;
- uint32_t rtsdtr_off; /* boolean */
int ioaddr; /* index in handles array */
EFI_HANDLE currdev; /* current serial device */
EFI_HANDLE condev; /* EFI Console device */
@@ -275,7 +274,6 @@ comc_probe(struct console *sc)
comc_port->databits = 8;
comc_port->parity = DefaultParity;
comc_port->stopbits = DefaultStopBits;
- comc_port->rtsdtr_off = 0; /* rts-dtr is on */
handle = NULL;
env = getenv("efi_com_port");
@@ -515,7 +513,6 @@ static bool
comc_setup(void)
{
EFI_STATUS status;
- UINT32 control;
char *ev;
/* port is not usable */
@@ -544,18 +541,17 @@ comc_setup(void)
return (false);
}
+#ifdef EFI_FORCE_RTS
if (comc_port->sio->GetControl != NULL && comc_port->sio->SetControl != NULL) {
+ UINT32 control;
+
status = comc_port->sio->GetControl(comc_port->sio, &control);
if (EFI_ERROR(status))
return (false);
- if (comc_port->rtsdtr_off) {
- control &= ~(EFI_SERIAL_REQUEST_TO_SEND |
- EFI_SERIAL_DATA_TERMINAL_READY);
- } else {
- control |= EFI_SERIAL_REQUEST_TO_SEND;
- }
+ control |= EFI_SERIAL_REQUEST_TO_SEND;
(void) comc_port->sio->SetControl(comc_port->sio, control);
}
+#endif
/* Mark this port usable. */
eficom.c_flags |= (C_PRESENTIN | C_PRESENTOUT);
return (true);