OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [c/] [src/] [lib/] [libbsp/] [m68k/] [mrm332/] [console/] [console.c] - Rev 1765

Compare with Previous | Blame | View Log

/*
 *  This file contains the generic console driver shell used
 *  by all console drivers using libchip.
 *
 *  This driver uses the termios pseudo driver.
 *
 *  COPYRIGHT (c) 1989-1997.
 *  On-Line Applications Research Corporation (OAR).
 *  Copyright assigned to U.S. Government, 1994.
 *
 *  The license and distribution terms for this file may be
 *  found in the file LICENSE in this distribution or at
 *  http://www.OARcorp.com/rtems/license.html.
 *
 *  console.c,v 1.2 2002/02/28 23:09:55 joel Exp
 */
 
#include <bsp.h>
#include <rtems/libio.h>
#include <termios.h>
#include "sci.h"
//#include "../../../../../../rtems/c/src/lib/libbsp/m68k/opti/console/duart.h"
//#include "../../../../../../rtems/c/src/lib/libc/libio_.h"
 
/*PAGE
 *
 *  console_open
 *
 *  open a port as a termios console.
 *
 *  the console is opened in bsp_postdriver_hook() in bsppost.c
 *
 */
 
rtems_device_driver console_open(
  rtems_device_major_number major,
  rtems_device_minor_number minor,
  void                    * arg
)
{
    rtems_status_code status;
 
    /* the console is opened three times at startup */
    /* for standard input, output, and error */
 
    /* Get correct callback structure for the device */
 
    /* argument of FALSE gives us interrupt driven serial io */
    /* argument of TRUE  gives us polling   based  serial io */
 
    /* SCI internal uart */
 
    status = rtems_termios_open( major, minor, arg, SciGetTermiosHandlers( TRUE ) );       
 
    return status;
}
 
/*PAGE
 *
 *  console_close
 *
 *  This routine closes a port that has been opened as console.
 */
 
rtems_device_driver console_close(
  rtems_device_major_number major,
  rtems_device_minor_number minor,
  void                    * arg
)
{
  return rtems_termios_close (arg);
}
 
/*PAGE
 *
 *  console_read
 *
 *  This routine uses the termios driver to read a character.
 */
 
rtems_device_driver console_read(
  rtems_device_major_number major,
  rtems_device_minor_number minor,
  void                    * arg
)
{
  return rtems_termios_read (arg);
}
 
/*PAGE
 *
 *  console_write
 *
 *  this routine uses the termios driver to write a character.
 */
 
rtems_device_driver console_write(
  rtems_device_major_number major,
  rtems_device_minor_number minor,
  void                    * arg
)
{
  return rtems_termios_write (arg);
}
 
/*PAGE
 *
 *  console_control
 *
 *  this routine uses the termios driver to process io
 */
 
rtems_device_driver console_control(
  rtems_device_major_number major,
  rtems_device_minor_number minor,
  void                    * arg
)
{
  return rtems_termios_ioctl (arg);
}
 
/*PAGE
 *
 *  console_initialize
 *
 *  Routine called to initialize the console device driver.
 */
 
rtems_device_driver console_initialize(
  rtems_device_major_number  major,
  rtems_device_minor_number  minor_arg,
  void                      *arg
)
{
  rtems_status_code          status;
 
  /*
   * initialize the termio interface.
   */
  rtems_termios_initialize();
 
 
  /*
   * register the SCI device name for termios
   * do this over in the sci driver init routine?
   */
 
  status = rtems_io_register_name( "/dev/sci", major, 0 );
 
  if (status != RTEMS_SUCCESSFUL)
  {
    rtems_fatal_error_occurred(status);
  }
 
 
  /*
   * Link the uart device to the console device
   */
 
#if 1
  status = rtems_io_register_name( "/dev/console", major, 0 );
 
  if (status != RTEMS_SUCCESSFUL)
  {
    rtems_fatal_error_occurred(status);
  }
#else
  if ( link( "/dev/sci", "/dev/console") < 0 )
  {
    rtems_fatal_error_occurred( RTEMS_IO_ERROR );
  }                               
#endif
 
  /*
   * Console Initialize Succesful
   */
 
  return RTEMS_SUCCESSFUL;
}
 
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.