Support variable speed
This commit is contained in:
parent
1da07b142b
commit
91d135a12c
2 changed files with 9 additions and 2 deletions
|
@ -61,7 +61,7 @@ serial_get_divisor (unsigned int speed)
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Set the baud rate. */
|
/* Set the baud rate. */
|
||||||
for (i = 0; i < sizeof (divisor_tab) / sizeof (divisor_tab[0]); i++)
|
for (i = 0; i < ARRAY_SIZE (divisor_tab); i++)
|
||||||
if (divisor_tab[i].speed == speed)
|
if (divisor_tab[i].speed == speed)
|
||||||
/* UART in Yeeloong runs twice the usual rate. */
|
/* UART in Yeeloong runs twice the usual rate. */
|
||||||
#ifdef GRUB_MACHINE_MIPS_YEELOONG
|
#ifdef GRUB_MACHINE_MIPS_YEELOONG
|
||||||
|
|
|
@ -48,13 +48,20 @@ get_divisor (unsigned int speed)
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The table which lists common configurations. */
|
/* The table which lists common configurations. */
|
||||||
|
/* Computed with a division formula with 3MHz as base frequency. */
|
||||||
static struct divisor divisor_tab[] =
|
static struct divisor divisor_tab[] =
|
||||||
{
|
{
|
||||||
|
{ 2400, 0x04e2 },
|
||||||
|
{ 4800, 0x0271 },
|
||||||
{ 9600, 0x4138 },
|
{ 9600, 0x4138 },
|
||||||
|
{ 19200, 0x809c },
|
||||||
|
{ 38400, 0xc04e },
|
||||||
|
{ 57600, 0xc034 },
|
||||||
|
{ 115200, 0x001a }
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Set the baud rate. */
|
/* Set the baud rate. */
|
||||||
for (i = 0; i < sizeof (divisor_tab) / sizeof (divisor_tab[0]); i++)
|
for (i = 0; i < ARRAY_SIZE (divisor_tab); i++)
|
||||||
if (divisor_tab[i].speed == speed)
|
if (divisor_tab[i].speed == speed)
|
||||||
return divisor_tab[i].div;
|
return divisor_tab[i].div;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue