summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2010-02-01 02:06:00 +0100
committerSegher Boessenkool <segher@kernel.crashing.org>2010-02-01 02:06:00 +0100
commit0362c7a009a79bdfd538cb53e0d8f3193639648d (patch)
treef5ea243d1425148a78d15cca28f080c1e34b70fa
parentb562b8f5cd04c3207627af9abd22fe667acb052e (diff)
UART: Fix baud rate setting
-rw-r--r--io.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/io.c b/io.c
index adab1e9..07879e6 100644
--- a/io.c
+++ b/io.c
@@ -118,8 +118,14 @@ void io_store(u16 val, u32 addr)
printf("IO STORE %04x to %04x\n", val, addr);
break;
- case 0x3d33: // UART baud rate
- printf("SET UART BAUD RATE to %d\n", 27000000 / (0x10000 - val));
+ // case 0x3d32: // UART reset
+
+ case 0x3d33: // UART baud rate low byte
+ printf("SET UART BAUD RATE to %u\n", 27000000 / 16 / (0x10000 - (mem[0x3d34] << 8) - val));
+ break;
+
+ case 0x3d34: // UART baud rate high byte
+ printf("SET UART BAUD RATE to %u\n", 27000000 / 16 / (0x10000 - (val << 8) - mem[0x3d33]));
break;
case 0x3d35: // UART TX data