Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Jan 2014 22:52:43 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r260868 - stable/9/sys/boot/i386/libi386
Message-ID:  <201401182252.s0IMqhwh082529@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Sat Jan 18 22:52:43 2014
New Revision: 260868
URL: http://svnweb.freebsd.org/changeset/base/260868

Log:
  MFC r245848 (by jhb):
  Always update the hw.uart.console hint anytime a change is made to the
  comconsole setup.  Previously the hint would be set when if you set a
  custom port, but it would not be updated if you later set a custom speed.
  
  Also, leave the hw.uart.console hint mutable so it can be overridden or
  unset by the user if needed.

Modified:
  stable/9/sys/boot/i386/libi386/comconsole.c
Directory Properties:
  stable/9/   (props changed)
  stable/9/sys/   (props changed)
  stable/9/sys/boot/   (props changed)

Modified: stable/9/sys/boot/i386/libi386/comconsole.c
==============================================================================
--- stable/9/sys/boot/i386/libi386/comconsole.c	Sat Jan 18 22:47:25 2014	(r260867)
+++ stable/9/sys/boot/i386/libi386/comconsole.c	Sat Jan 18 22:52:43 2014	(r260868)
@@ -50,7 +50,6 @@ static int	comc_init(int arg);
 static void	comc_putchar(int c);
 static int	comc_getchar(void);
 static int	comc_getspeed(void);
-static void	set_hw_console_hint(void);
 static int	comc_ischar(void);
 static int	comc_parseint(const char *string);
 static uint32_t comc_parse_pcidev(const char *string);
@@ -202,27 +201,14 @@ comc_port_set(struct env_var *ev, int fl
     }
 
     if ((comconsole.c_flags & (C_ACTIVEIN | C_ACTIVEOUT)) != 0 &&
-	comc_port != port) {
+	comc_port != port)
 	comc_setup(comc_curspeed, port);
-	set_hw_console_hint();
-    }
 
     env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL);
 
     return (CMD_OK);
 }
 
-static void
-set_hw_console_hint(void)
-{
-	char intbuf[64];
-
-	unsetenv("hw.uart.console");
-	sprintf(intbuf, "io:%d,br:%d", comc_port, comc_curspeed);
-	env_setenv("hw.uart.console", EV_VOLATILE, intbuf,
-	    env_noset, env_nounset);
-}
-
 /*
  * Input: bus:dev:func[:bar]. If bar is not specified, it is 0x10.
  * Output: bar[24:16] bus[15:8] dev[7:3] func[2:0]
@@ -288,7 +274,6 @@ comc_pcidev_handle(uint32_t locator)
 		   comc_port_set, env_nounset);
 
 	comc_setup(comc_curspeed, port);
-	set_hw_console_hint();
 	comc_locator = locator;
 
 	return (CMD_OK);
@@ -318,8 +303,10 @@ static void
 comc_setup(int speed, int port)
 {
     static int TRY_COUNT = 1000000;
+    char intbuf[64];
     int tries;
 
+    unsetenv("hw.uart.console");
     comc_curspeed = speed;
     comc_port = port;
 
@@ -334,9 +321,11 @@ comc_setup(int speed, int port)
         inb(comc_port + com_data);
     while (inb(comc_port + com_lsr) & LSR_RXRDY && ++tries < TRY_COUNT);
 
-    if (tries < TRY_COUNT)
+    if (tries < TRY_COUNT) {
 	comconsole.c_flags |= (C_PRESENTIN | C_PRESENTOUT);
-    else
+	sprintf(intbuf, "io:%d,br:%d", comc_port, comc_curspeed);
+	env_setenv("hw.uart.console", EV_VOLATILE, intbuf, NULL, NULL);
+    } else
 	comconsole.c_flags &= ~(C_PRESENTIN | C_PRESENTOUT);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401182252.s0IMqhwh082529>