[BACK]Return to sausart.c CVS log [TXT][DIR] Up to [local] / funnyos / arch / sam7s64 / dev

File: [local] / funnyos / arch / sam7s64 / dev / sausart.c (download)

Revision 1.2, Sat Nov 24 17:13:45 2007 UTC (16 years, 6 months ago) by nbrk
Branch: MAIN
Changes since 1.1: +14 -2 lines

make usart_early_putchar() convert each \n into CRLF.

/*
 * $Id: sausart.c,v 1.2 2007/11/24 17:13:45 nbrk Exp $
 */
#include <sys/types.h>
#include <sys/device.h>

#include <arch/sam7s64/dev/at91sam7.h>

/*
 * driver for USART.
 */

void
sausart_early_putchar(char ch)
{
	/*
	 * Put a character into an unconfigured console.
	 * Note that USART0 (DBGU) should be already configured (clocks/un-pio, etc.).
	 * Such configuration is done in config_machineinit().
	 */

	/* wait for previous character to transmit */
	while( ((*AT91C_US0_CSR) & AT91C_US_TXRDY) == 0)
		;

	/* if we encounter \n (LF), send \r\n (CRLF) */
	if (ch == '\n') {

		*AT91C_US0_THR = 0x0d;
		while( ((*AT91C_US0_CSR) & AT91C_US_TXRDY) == 0)
			;

		*AT91C_US0_THR = 0x0a;

		return;
	}

	/* put current character into Transmit Hold Register */
	*AT91C_US0_THR = ch;
}