From b96bd98f46ed8fecd664ddd3e92f57348eb3e7b1 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 3 Mar 2009 12:20:30 +0000 Subject: 2009-03-02 Joel Sherrill * Makefile.am, console/console.c: Use shared polled console framework. --- c/src/lib/libbsp/nios2/nios2_iss/ChangeLog | 4 + c/src/lib/libbsp/nios2/nios2_iss/Makefile.am | 2 +- c/src/lib/libbsp/nios2/nios2_iss/console/console.c | 169 +++------------------ 3 files changed, 25 insertions(+), 150 deletions(-) diff --git a/c/src/lib/libbsp/nios2/nios2_iss/ChangeLog b/c/src/lib/libbsp/nios2/nios2_iss/ChangeLog index 71985f3c18..0aff4e144a 100644 --- a/c/src/lib/libbsp/nios2/nios2_iss/ChangeLog +++ b/c/src/lib/libbsp/nios2/nios2_iss/ChangeLog @@ -1,3 +1,7 @@ +2009-03-02 Joel Sherrill + + * Makefile.am, console/console.c: Use shared polled console framework. + 2009-03-02 Joel Sherrill * Makefile.am, preinstall.am, include/bsp.h, startup/setvec.c: Now diff --git a/c/src/lib/libbsp/nios2/nios2_iss/Makefile.am b/c/src/lib/libbsp/nios2/nios2_iss/Makefile.am index 90f7949ecd..4a70984dc8 100644 --- a/c/src/lib/libbsp/nios2/nios2_iss/Makefile.am +++ b/c/src/lib/libbsp/nios2/nios2_iss/Makefile.am @@ -39,7 +39,7 @@ libbsp_a_SOURCES += ../../shared/bspclean.c ../../shared/bsplibc.c \ # clock libbsp_a_SOURCES += clock/clock.c ../../../shared/clockdrv_shell.h # console -libbsp_a_SOURCES += console/console.c +libbsp_a_SOURCES += console/console.c ../../shared/console-polled.c # timer libbsp_a_SOURCES += timer/timer.c if HAS_MP diff --git a/c/src/lib/libbsp/nios2/nios2_iss/console/console.c b/c/src/lib/libbsp/nios2/nios2_iss/console/console.c index 80deefc6d2..90bff9a46b 100644 --- a/c/src/lib/libbsp/nios2/nios2_iss/console/console.c +++ b/c/src/lib/libbsp/nios2/nios2_iss/console/console.c @@ -22,42 +22,6 @@ /* #define JTAG_UART_REGS ((altera_avalon_jtag_uart_regs*)NIOS2_IO_BASE(JTAG_UART_BASE)) */ -#if 0 -#define XOFFchar 0x13 -#define XONchar 0x11 -#endif - -/* console_initialize - * - * This routine initializes the console IO driver. - * - * Input parameters: NONE - * - * Output parameters: NONE - * - * Return values: - */ - -rtems_device_driver console_initialize( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *arg -) -{ - rtems_status_code status; - - status = rtems_io_register_name( - "/dev/console", - major, - (rtems_device_minor_number) 0 - ); - - if (status != RTEMS_SUCCESSFUL) - rtems_fatal_error_occurred(status); - - return RTEMS_SUCCESSFUL; -} - /* is_character_ready * * If a character is available, this routine reads it and stores @@ -88,8 +52,7 @@ bool is_character_ready( return false; } -/* inbyte - * +/* * This routine reads a character from the SOURCE. * * Input parameters: NONE @@ -100,18 +63,21 @@ bool is_character_ready( * character read from SOURCE */ -char inbyte( void ) +int console_inbyte_nonblocking( + int port +) { - /* - * Wait until a character is available. - */ - char ch; - while(!is_character_ready(&ch)); + char ch; + /* + * Wait until a character is available. + */ + + if (is_character_ready(&ch)) return ch; + return -1; } -/* outbyte - * +/* * This routine transmits a character out the SOURCE. It may support * XON/XOFF flow control. * @@ -121,18 +87,12 @@ char inbyte( void ) * Output parameters: NONE */ -void outbyte( +void console_outbyte_polled( + int port, char ch ) { altera_avalon_jtag_uart_regs *ajur = NIOS2_IO_BASE(JTAG_UART_BASE); - /* - * Carriage Return/New line translation. - */ - - if ( ch == '\n' ) - outbyte( '\r' ); - /* * Wait for the transmitter to be ready. * Check for flow control requests and process. @@ -145,103 +105,14 @@ void outbyte( } /* - * Open entry point - */ + * * To support printk + * */ -rtems_device_driver console_open( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - return RTEMS_SUCCESSFUL; -} - -/* - * Close entry point - */ - -rtems_device_driver console_close( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - return RTEMS_SUCCESSFUL; -} - -/* - * read bytes from the serial port. We only have stdin. - */ - -rtems_device_driver console_read( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - rtems_libio_rw_args_t *rw_args; - char *buffer; - int maximum; - int count = 0; - - rw_args = (rtems_libio_rw_args_t *) arg; - - buffer = rw_args->buffer; - maximum = rw_args->count; - - for (count = 0; count < maximum; count++) { - buffer[ count ] = inbyte(); - if (buffer[ count ] == '\n' || buffer[ count ] == '\r') { - buffer[ count++ ] = '\n'; - break; - } - } - - rw_args->bytes_moved = count; - return (count >= 0) ? RTEMS_SUCCESSFUL : RTEMS_UNSATISFIED; -} - -/* - * write bytes to the serial port. Stdout and stderr are the same. - */ +#include -rtems_device_driver console_write( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - int count; - int maximum; - rtems_libio_rw_args_t *rw_args; - char *buffer; - rw_args = (rtems_libio_rw_args_t *) arg; +ISS_output_char(char c) { console_outbyte_polled( 0, c ); } - buffer = rw_args->buffer; - maximum = rw_args->count; +BSP_output_char_function_type BSP_output_char = ISS_output_char; +BSP_polling_getchar_function_type BSP_poll_char = NULL; - for (count = 0; count < maximum; count++) { - if ( buffer[ count ] == '\n') { - outbyte('\r'); - } - outbyte( buffer[ count ] ); - } - - rw_args->bytes_moved = maximum; - return 0; -} - -/* - * IO Control entry point - */ - -rtems_device_driver console_control( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - return RTEMS_SUCCESSFUL; -} -- cgit v1.2.3