summaryrefslogblamecommitdiffstats
path: root/c/src/lib/libbsp/m68k/mrm332/console/console.c
blob: 8fd19e074ae3b491e7572eefc543ba251d334d35 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
  

                                                            
  


                                               



                                                           
                                         



        

                        



                                                                               
 
      
  
                
  
                                     
  
                                                               
  

   





                                  














                                                                                           

 




                                                               
   
 





                                  
                                   

 




                                                             
   
 





                                  
                                  

 




                                                              
   
 





                                  
                                   

 




                                                      
   
 





                                    


























































                                                              


                          
 
/*
 *  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).
 *
 *  The license and distribution terms for this file may be
 *  found in the file LICENSE in this distribution or at
 *  http://www.rtems.com/license/LICENSE.
 *
 *  $Id$
 */

#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;
}