The UART divider should be calculated based on the base frequency

and baudrate, not hardcoded in addition to that.

Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Acked-by: Peter Stuge <peter@stuge.se>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6538 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Stefan Reinauer
2011-04-22 01:45:11 +00:00
committed by Stefan Reinauer
parent 3e4fb9d1a1
commit 6aca1e8b26
4 changed files with 16 additions and 10 deletions

View File

@@ -25,7 +25,13 @@ static void ttyS0_init(void)
{
static const unsigned char div[8] = { 1, 2, 3, 6, 12, 24, 48, 96 };
int b_index = 0;
unsigned int divisor = CONFIG_TTYS0_DIV;
/* TODO the divisor calculation is hard coded to standard UARTs. Some
* UARTs won't work with these values. This should be a property of the
* UART used, worst case a Kconfig variable. For now live with hard
* codes as the only devices that might be different are the iWave
* iRainbowG6 and the OXPCIe952 card (and the latter is memory mapped)
*/
unsigned int divisor = 115200 / CONFIG_TTYS0_BAUD;
if (get_option(&b_index, "baud_rate") == 0) {
divisor = div[b_index];