Showing with 25 additions and 2 deletions.
  1. +6 −1 CHANGELOG.md
  2. +19 −1 src/sercon.c
7 changes: 6 additions & 1 deletion CHANGELOG.md
Expand Up @@ -4,6 +4,9 @@ Change log for PC Engines fork of SeaBIOS
Fourth digit in release number means PC Engines patch.

## [Unreleased]
## [rel-1.11.0.7] - 2018-12-03
### Added
- enabled COM2 redirection option

## [rel-1.11.0.6] - 2018-11-07
### Fixed
Expand Down Expand Up @@ -70,7 +73,9 @@ Fourth digit in release number means PC Engines patch.
### Fixed
- prevented from printing character multiple times

[Unreleased]: https://github.com/pcengines/seabios/compare/rel-1.11.0.5...apu_support
[Unreleased]: https://github.com/pcengines/seabios/compare/rel-1.11.0.7...apu_support
[rel-1.11.0.7]: https://github.com/pcengines/seabios/compare/rel-1.11.0.6...rel-1.11.0.7
[rel-1.11.0.6]: https://github.com/pcengines/seabios/compare/rel-1.11.0.5...rel-1.11.0.6
[rel-1.11.0.5]: https://github.com/pcengines/seabios/compare/rel-1.11.0.4...rel-1.11.0.5
[rel-1.11.0.4]: https://github.com/pcengines/seabios/compare/rel-1.11.0.3...rel-1.11.0.4
[rel-1.11.0.3]: https://github.com/pcengines/seabios/compare/rel-1.11.0.2...rel-1.11.0.3
Expand Down
20 changes: 19 additions & 1 deletion src/sercon.c
Expand Up @@ -45,7 +45,6 @@ static void cursor_pos_set(u8 row, u8 col)

static char **BootOrder VARVERIFY32INIT;
static int BootOrderCount;
static int scon;

static void
loadBootOrder(void)
Expand Down Expand Up @@ -122,6 +121,20 @@ static int find_scon(void)
return -1;
}

static int find_com2en(void)
{
int i = 0;
for (i=0; i < BootOrderCount; i++)
{
if (find_glob_prefix("com2en0", BootOrder[i]))
return 0;
if (find_glob_prefix("com2en1", BootOrder[i]))
return 1;
}
return -1;
}


/****************************************************************
* serial console output
****************************************************************/
Expand Down Expand Up @@ -598,6 +611,7 @@ void sercon_setup(void)

struct segoff_s seabios, vgabios;
u16 addr;
int scon, com2_enabled;

addr = romfile_loadint("etc/sercon-port", 0);
if (!addr)
Expand All @@ -606,6 +620,10 @@ void sercon_setup(void)
loadBootOrder();

scon = find_scon();
com2_enabled = find_com2en();

if (com2_enabled == 1 && addr == 0x3f8)
addr = 0x2f8;

dprintf(1, "sercon: using ioport 0x%x\n", addr);

Expand Down