123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /*
- * Copyright (C) 2004 Tobias Lorenz
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
- #include "etherboot.h"
- #include "hardware.h"
- #ifdef CONSOLE_SERIAL
-
- /*
- * void serial_putc(int ch);
- * Write character `ch' to port UART_BASE.
- */
- void serial_putc(int ch)
- {
- /* wait for room in the 32 byte tx FIFO */
- while ((P2001_UART->r.STATUS & 0x3f) > /* 30 */ 0) ;
- P2001_UART->w.TX1 = ch & 0xff;
- }
-
- /*
- * int serial_getc(void);
- * Read a character from port UART_BASE.
- */
- int serial_getc(void)
- {
- while (((P2001_UART->r.STATUS >> 6) & 0x3f) == 0) ;
- return P2001_UART->r.RX1 & 0xff;
- }
-
- /*
- * int serial_ischar(void);
- * If there is a character in the input buffer of port UART_BASE,
- * return nonzero; otherwise return 0.
- */
- int serial_ischar(void)
- {
- return (P2001_UART->r.STATUS >> 6) & 0x3f;
- }
-
- /*
- * int serial_init(void);
- * Initialize port to speed 57.600, line settings 8N1.
- */
- int serial_init(void)
- {
- static unsigned int N;
- // const M=3
- P2001_UART->w.Clear = 0; // clear
- N = ((SYSCLK/8)*3)/CONSPEED;
- P2001_UART->w.Baudrate = (N<<16)+3; // set 57.600 BAUD
- P2001_UART->w.Config = 0xcc100; // set 8N1, *water = 12
- return 1;
- }
-
- /*
- * void serial_fini(void);
- * Cleanup our use of the serial port, in particular flush the
- * output buffer so we don't accidentially loose characters.
- */
- void serial_fini(void)
- {
- }
- #endif
|