/****************************************************** Name: console_initialize Input parameters: MAJOR # of console_driver, minor is always 0, args are always NULL Output parameters: - Description: Reserve resources consumed by this driver TODO: We should pass m340_uart_config table in arg *****************************************************/ rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; int i; /* * Set up TERMIOS */ rtems_termios_initialize (); /* * Do device-specific initialization */ Init_UART_Table(); dbugInitialise (); Fifo_Full_benchmark_timer_initialize(); /* * Register the devices */ for (i=0; i<UART_NUMBER_OF_CHANNELS; i++) { if (m340_uart_config[i].enable) { status = rtems_io_register_name (m340_uart_config[i].name, major, i); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); } } return RTEMS_SUCCESSFUL; }
/* * Test Device Driver Entry Points */ rtems_device_driver termios_test_driver_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; rtems_termios_initialize(); /* * Register Device Names */ (void) rtems_io_register_name( TERMIOS_TEST_DRIVER_DEVICE_NAME, major, 0 ); status = rtems_timer_create(rtems_build_name('T', 'M', 'R', 'X'), &Rx_Timer); if ( status ) rtems_fatal_error_occurred(1);; status = rtems_timer_create(rtems_build_name('T', 'M', 'T', 'X'), &Tx_Timer); if ( status ) rtems_fatal_error_occurred(1);; return RTEMS_SUCCESSFUL; }
rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; rtems_termios_initialize(); /* * Make sure the hardware is initialized. */ console_initialize_hardware(); /* * Register Device Names */ status = rtems_io_register_name( "/dev/console", major, 0 ); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred(status); return RTEMS_SUCCESSFUL; }
rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code sc = RTEMS_SUCCESSFUL; const console_generic_info *info_table = console_generic_info_table; rtems_device_minor_number count = console_generic_info_count; rtems_device_minor_number console = console_generic_minor; if (count <= 0) { mpc55xx_fatal(MPC55XX_FATAL_CONSOLE_GENERIC_COUNT); } rtems_termios_initialize(); for (minor = 0; minor < count; ++minor) { const console_generic_info *info = info_table + minor; sc = rtems_io_register_name(info->device_path, major, minor); if (sc != RTEMS_SUCCESSFUL) { mpc55xx_fatal(MPC55XX_FATAL_CONSOLE_GENERIC_REGISTER); } } sc = rtems_io_register_name(CONSOLE_DEVICE_NAME, major, console); if (sc != RTEMS_SUCCESSFUL) { mpc55xx_fatal(MPC55XX_FATAL_CONSOLE_GENERIC_REGISTER_CONSOLE); } console_generic_char_out_do_init(); return sc; }
/* * paux device driver INITIALIZE entry point. */ rtems_device_driver paux_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg) { rtems_status_code status; /* * Set up TERMIOS */ rtems_termios_initialize(); printk( "PS/2 mouse probe.\n" ); if( psaux_init() < 0 ) { printk("Error detecting PS/2 mouse --\n"); /* we might want to finish the application here !!! */ } open_aux(); /* * Register the device */ status = rtems_io_register_name ("/dev/mouse", major, 0); if (status != RTEMS_SUCCESSFUL) { printk("Error registering paux device!\n"); rtems_fatal_error_occurred (status); } return RTEMS_SUCCESSFUL; } /* tty_initialize */
rtems_status_code console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { size_t i; rtems_termios_initialize(); for (i = 0; i < RTEMS_ARRAY_SIZE(zynqmp_uart_instances); ++i) { char uart[] = "/dev/ttySX"; uart[sizeof(uart) - 2] = (char) ('0' + i); rtems_termios_device_install( &uart[0], &zynq_uart_handler, NULL, &zynqmp_uart_instances[i].base ); if (i == BSP_CONSOLE_MINOR) { link(&uart[0], CONSOLE_DEVICE_NAME); } } return RTEMS_SUCCESSFUL; }
/*-------------------------------------------------------------------------+ | Console device driver INITIALIZE entry point. +--------------------------------------------------------------------------+ | Initilizes the I/O console (keyboard + VGA display) driver. +--------------------------------------------------------------------------*/ rtems_device_driver console_initialize(rtems_device_major_number major, rtems_device_minor_number minor, void *arg) { rtems_status_code status; /* * Set up TERMIOS */ rtems_termios_initialize (); /* * Do device-specific initialization */ /* 115200-8-N-1, without hardware flow control */ BSP_uart_init(BSPConsolePort, 115200, CHR_8_BITS, 0, 0, 0); /* Set interrupt handler */ if(BSPConsolePort == BSP_UART_COM1) { console_isr_data.name = BSP_UART_COM1_IRQ; console_isr_data.hdl = BSP_uart_termios_isr_com1; } else { assert(BSPConsolePort == BSP_UART_COM2); console_isr_data.name = BSP_UART_COM2_IRQ; console_isr_data.hdl = BSP_uart_termios_isr_com2; } status = BSP_install_rtems_irq_handler(&console_isr_data); if (!status){ printk("Error installing serial console interrupt handler!\n"); rtems_fatal_error_occurred(status); } /* * Register the device */ status = rtems_io_register_name ("/dev/console", major, 0); if (status != RTEMS_SUCCESSFUL) { printk("Error registering console device!\n"); rtems_fatal_error_occurred (status); } if(BSPConsolePort == BSP_UART_COM1) { printk("Initialized console on port COM1 115200-8-N-1\n\n"); } else { printk("Initialized console on port COM2 115200-8-N-1\n\n"); } return RTEMS_SUCCESSFUL; } /* console_initialize */
rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; int i; for (i = 0; i < NUM_DEVS; i++) { imx_uart_init(i); } rtems_termios_initialize(); /* /dev/console and /dev/tty0 are the same */ status = rtems_io_register_name("/dev/console", major, 0); if (status != RTEMS_SUCCESSFUL) { rtems_panic("%s:%d Error registering /dev/console :: %d\n", __FUNCTION__, __LINE__, status); } status = rtems_io_register_name("/dev/tty0", major, 0); if (status != RTEMS_SUCCESSFUL) { rtems_panic("%s:%d Error registering /dev/tty0 :: %d\n", __FUNCTION__, __LINE__, status); } status = rtems_io_register_name("/dev/tty1", major, 1); if (status != RTEMS_SUCCESSFUL) { rtems_panic("%s:%d Error registering /dev/tty1 :: %d\n", __FUNCTION__, __LINE__, status); } return RTEMS_SUCCESSFUL; }
/* console_initialize -- * This routine initializes the console IO drivers and register devices * in RTEMS I/O system. * * PARAMETERS: * major - major console device number * minor - minor console device number (not used) * arg - device initialize argument * * RETURNS: * RTEMS error code (RTEMS_SUCCESSFUL if device initialized successfuly) */ rtems_device_driver console_initialize(rtems_device_major_number major, rtems_device_minor_number minor, void *arg) { rtems_status_code status; #ifdef SH4_WITH_IPL /* booting from flash we cannot have IPL console */ if (boot_mode != SH4_BOOT_MODE_IPL && console_mode == CONSOLE_MODE_IPL) console_mode = CONSOLE_MODE_INT; /* break out from gdb if neccessary */ if (boot_mode == SH4_BOOT_MODE_IPL && console_mode != CONSOLE_MODE_IPL) ipl_finish(); #endif /* * Set up TERMIOS */ if ((console_mode != CONSOLE_MODE_RAW) && (console_mode != CONSOLE_MODE_IPL)) rtems_termios_initialize (); /* * Register the devices */ status = rtems_io_register_name ("/dev/console", major, 0); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); status = rtems_io_register_name ("/dev/aux", major, 1); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); if (console_mode == CONSOLE_MODE_RAW) { rtems_status_code sc; sc = sh4uart_init(&sh4_uarts[0], /* uart */ NULL, /* tty */ 1, /* UART channel number */ 0); /* Poll-mode */ if (sc == RTEMS_SUCCESSFUL) sc = sh4uart_reset(&sh4_uarts[0]); sc = sh4uart_init(&sh4_uarts[1], /* uart */ NULL, /* tty */ 2, /* UART channel number */ 0); /* Poll-mode */ if (sc == RTEMS_SUCCESSFUL) sc = sh4uart_reset(&sh4_uarts[1]); return sc; } return RTEMS_SUCCESSFUL; }
/*-------------------------------------------------------------------------+ | Console device driver INITIALIZE entry point. +--------------------------------------------------------------------------+ | Initilizes the I/O console (keyboard + VGA display) driver. +--------------------------------------------------------------------------*/ rtems_device_driver console_initialize(rtems_device_major_number major, rtems_device_minor_number minor, void *arg) { rtems_status_code status; /* * The video was initialized in the start.s code and does not need * to be reinitialized. */ /* * Set up TERMIOS */ rtems_termios_initialize (); /* * Do device-specific initialization */ /* RTEMS calls this routine once with 'minor'==0; loop through * all known instances... */ for (minor=0; minor < sizeof(ttyS)/sizeof(ttyS[0]); minor++) { char *nm; /* * Skip ports (possibly not supported by BSP...) we have no ISR for */ if ( ! ttyS[minor].isr ) continue; /* * Register the device */ status = rtems_io_register_name ((nm=ttyS[minor].name), major, minor); if ( RTEMS_SUCCESSFUL==status && BSPConsolePort == minor) { printk("Registering /dev/console as minor %d (==%s)\n", minor, ttyS[minor].name); /* also register an alias */ status = rtems_io_register_name ( (nm="/dev/console"), major, minor); } if (status != RTEMS_SUCCESSFUL) { printk("Error registering %s!\n",nm); rtems_fatal_error_occurred (status); } } return RTEMS_SUCCESSFUL; } /* console_initialize */
rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; int i; char console_name[16]; rtems_termios_initialize(); /* Find UARTs */ leon3_console_scan_uarts(); /* Update syscon_uart_index to index used as /dev/console * Let user select System console by setting syscon_uart_index. If the * BSP is to provide the default UART (syscon_uart_index==0): * non-MP: APBUART[0] is system console * MP: LEON CPU index select UART */ if (syscon_uart_index == 0) { #if defined(RTEMS_MULTIPROCESSING) syscon_uart_index = LEON3_Cpu_Index; #else syscon_uart_index = 0; #endif } else { syscon_uart_index = syscon_uart_index - 1; /* User selected sys-console */ } /* Register Device Names * * 0 /dev/console - APBUART[USER-SELECTED, DEFAULT=APBUART[0]] * 1 /dev/console_a - APBUART[0] (by default not present because is console) * 2 /dev/console_b - APBUART[1] * ... * * On a MP system one should not open UARTs that other OS instances use. */ if (syscon_uart_index < uarts) { status = rtems_io_register_name("/dev/console", major, 0); if (status != RTEMS_SUCCESSFUL) bsp_fatal(LEON3_FATAL_CONSOLE_REGISTER_DEV); } strcpy(console_name,"/dev/console_a"); for (i = 0; i < uarts; i++) { if (i == syscon_uart_index) continue; /* skip UART that is registered as /dev/console */ console_name[13] = 'a' + i; rtems_io_register_name( console_name, major, i+1); } return RTEMS_SUCCESSFUL; }
rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; int i, uart0; char console_name[16]; extern rtems_configuration_table Configuration; rtems_termios_initialize(); /* Find UARTs */ scan_uarts(); if (Configuration.User_multiprocessing_table != NULL) uart0 = LEON3_Cpu_Index; else uart0 = 0; /* Register Device Names */ if (uarts && (uart0 < uarts)) { status = rtems_io_register_name( "/dev/console", major, 0 ); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred(status); strcpy(console_name,"/dev/console_a"); for (i = uart0+1; i < uarts; i++) { console_name[13]++; status = rtems_io_register_name( console_name, major, i); } } /* * Initialize Hardware */ if ((Configuration.User_multiprocessing_table == NULL) || ((Configuration.User_multiprocessing_table)->node == 1)) { for (i = uart0; i < uarts; i++) { LEON3_Console_Uart[i]->ctrl |= LEON_REG_UART_CTRL_RE | LEON_REG_UART_CTRL_TE; LEON3_Console_Uart[i]->status = 0; } } return RTEMS_SUCCESSFUL; }
rtems_status_code console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { size_t i; rtems_termios_initialize(); for (i = 0; i < RTEMS_ARRAY_SIZE(atsam_usart_instances); ++i) { char usart[] = "/dev/ttyUSARTX"; usart[sizeof(usart) - 2] = (char) ('0' + i); rtems_termios_device_install( &usart[0], &atsam_usart_handler, NULL, &atsam_usart_instances[i].base ); #if ATSAM_CONSOLE_DEVICE_TYPE == 0 if (i == ATSAM_CONSOLE_DEVICE_INDEX) { atsam_usart_instances[i].console = true; link(&usart[0], CONSOLE_DEVICE_NAME); } #endif } for (i = 0; i < RTEMS_ARRAY_SIZE(atsam_uart_instances); ++i) { char uart[] = "/dev/ttyUARTX"; uart[sizeof(uart) - 2] = (char) ('0' + i); rtems_termios_device_install( &uart[0], &atsam_uart_handler, NULL, &atsam_uart_instances[i].base ); #if ATSAM_CONSOLE_DEVICE_TYPE == 1 if (i == ATSAM_CONSOLE_DEVICE_INDEX) { atsam_uart_instances[i].console = true; link(&usart[0], CONSOLE_DEVICE_NAME); } #endif } return RTEMS_SUCCESSFUL; }
/* * Test Device Driver Entry Points */ rtems_device_driver termios_test_driver_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_termios_initialize(); /* * Register Device Names */ (void) rtems_io_register_name( TERMIOS_TEST_DRIVER_DEVICE_NAME, major, 0 ); return RTEMS_SUCCESSFUL; }
/** * @brief Serial drivers init function * * Initialize all serial drivers specified in driver_context_table * * @param[in] major * @param[in] minor * @param[in] arg * @retval RTEMS_SUCCESSFUL Initialization completed */ rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code sc; #if CONSOLE_USE_INTERRUPTS const rtems_termios_device_handler *handler = &tms570_sci_handler_interrupt; #else const rtems_termios_device_handler *handler = &tms570_sci_handler_polled; #endif /* * Initialize the Termios infrastructure. If Termios has already * been initialized by another device driver, then this call will * have no effect. */ rtems_termios_initialize(); /* Initialize each device */ for ( minor = 0; minor < RTEMS_ARRAY_SIZE(driver_context_table); ++minor ) { tms570_sci_context *ctx = &driver_context_table[minor]; /* * Install this device in the file system and Termios. In order * to use the console (i.e. being able to do printf, scanf etc. * on stdin, stdout and stderr), one device must be registered as * "/dev/console" (CONSOLE_DEVICE_NAME). */ sc = rtems_termios_device_install( ctx->device_name, major, minor, handler, NULL, &ctx->base ); if ( sc != RTEMS_SUCCESSFUL ) { bsp_fatal(BSP_FATAL_CONSOLE_NO_DEV); } } return RTEMS_SUCCESSFUL; }
/* console_initialize -- * This routine initializes the console IO drivers and register devices * in RTEMS I/O system. * * PARAMETERS: * major - major console device number * minor - minor console device number (not used) * arg - device initialize argument * * RETURNS: * RTEMS error code (RTEMS_SUCCESSFUL if device initialized successfuly) */ rtems_device_driver console_initialize(rtems_device_major_number major, rtems_device_minor_number minor, void *arg) { rtems_status_code status; /* * Set up TERMIOS */ if (console_mode != CONSOLE_MODE_RAW) rtems_termios_initialize (); /* * Register the devices */ status = rtems_io_register_name ("/dev/console", major, 0); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); status = rtems_io_register_name ("/dev/aux", major, 1); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); if (console_mode == CONSOLE_MODE_RAW) { rtems_status_code sc; sc = mcfuart_init(&uart[0], /* uart */ NULL, /* tty */ 0, /* interrupt vector number */ 1); /* UART channel number */ if (sc == RTEMS_SUCCESSFUL) sc = mcfuart_reset(&uart[0]); sc = mcfuart_init(&uart[1], /* uart */ NULL, /* tty */ 0, /* interrupt vector number */ 2); /* UART channel number */ if (sc == RTEMS_SUCCESSFUL) sc = mcfuart_reset(&uart[1]); return sc; } return RTEMS_SUCCESSFUL; }
/* * Serial Mouse - device driver INITIALIZE entry point. */ rtems_device_driver serial_mouse_initialize(rtems_device_major_number major, rtems_device_minor_number minor, void *arg) { rtems_status_code status; /* Check if this port is not been used as console */ if( BSPConsolePort == BSP_UART_PORT ) { status = -1; printk("SERIAL MOUSE: port selected as console.( %d )\n", BSP_UART_PORT ); rtems_fatal_error_occurred( status ); } /* * Set up TERMIOS */ rtems_termios_initialize(); /* * Do device-specific initialization */ /* 9600-8-N-1, without hardware flow control */ BSP_uart_init( BSP_UART_PORT, 1200, CHR_8_BITS, 0, 0, 0 ); status = BSP_install_rtems_irq_handler( &serial_mouse_isr_data ); if( !status ) { printk("Error installing serial mouse interrupt handler!\n"); rtems_fatal_error_occurred(status); } /* * Register the device */ status = rtems_io_register_name ("/dev/mouse", major, 0); if (status != RTEMS_SUCCESSFUL) { printk("Error registering /dev/mouse device!\n"); rtems_fatal_error_occurred (status); } printk("Device: /dev/mouse on COM%d -- ok \n", BSP_UART_PORT ); return RTEMS_SUCCESSFUL; } /* tty_initialize */
rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { t32_console_context *ctx = &t32_console_instance; rtems_termios_initialize(); rtems_termios_device_context_initialize(&ctx->base, "T32 Console"); rtems_termios_device_install( CONSOLE_DEVICE_NAME, &t32_console_handler, NULL, &ctx->base ); return RTEMS_SUCCESSFUL; }
/*************************************************************************** Function : console_initialize Description : This initialises termios, both sets of uart hardware before registering /dev/tty devices for each channel and the system /dev/console. ***************************************************************************/ rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; /* Set up TERMIOS */ rtems_termios_initialize (); /* set io modes for the different channels and initialize device */ IntUartInfo[minor].iomode = TERMIOS_IRQ_DRIVEN; IntUartInitialize(); /* Register the console port */ status = rtems_io_register_name ("/dev/console", major, CONSOLE_PORT); if ( status != RTEMS_SUCCESSFUL ) { rtems_fatal_error_occurred (status); } /* Register the other port */ if ( CONSOLE_PORT != 0 ) { status = rtems_io_register_name ("/dev/tty00", major, 0); if ( status != RTEMS_SUCCESSFUL ) { rtems_fatal_error_occurred (status); } } if ( CONSOLE_PORT != 1 ) { status = rtems_io_register_name ("/dev/tty01", major, 1); if ( status != RTEMS_SUCCESSFUL ) { rtems_fatal_error_occurred (status); } } return(RTEMS_SUCCESSFUL); }
rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; rtems_isr_entry dummy; rtems_termios_initialize(); status = rtems_io_register_name("/dev/console", major, 0); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred(status); rtems_interrupt_catch(mmconsole_interrupt, MM_IRQ_UART, &dummy); bsp_interrupt_vector_enable(MM_IRQ_UART); MM_WRITE(MM_UART_CTRL, UART_CTRL_RX_INT|UART_CTRL_TX_INT); return RTEMS_SUCCESSFUL; }
rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg) { int i; console_major = major; rtems_termios_initialize(); /* Register all Console a file system device node */ for (i=0; i<CONSOLE_MAX; i++) { if (cons[i].dev) console_dev_init(&cons[i], i); } console_initialized = 1; return RTEMS_SUCCESSFUL; }
/* * Initialize and register the device */ rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; /* * Set up TERMIOS */ rtems_termios_initialize (); /* * Register the device */ status = rtems_io_register_name ("/dev/console", major, 0); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); return RTEMS_SUCCESSFUL; }
/* * Test Device Driver Entry Points */ rtems_device_driver termios_test_driver_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code sc; rtems_termios_initialize(); /* * Register Device Names */ puts( "Termios_test_driver - rtems_io_register " TERMIOS_TEST_DRIVER_DEVICE_NAME " - OK" ); sc = rtems_io_register_name( TERMIOS_TEST_DRIVER_DEVICE_NAME, major, 0 ); directive_failed( sc, "rtems_io_register_name" ); return RTEMS_SUCCESSFUL; }
/* * Initialize and register the device */ rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; /* * Set up TERMIOS if needed */ #if UARTS_USE_TERMIOS == 1 rtems_termios_initialize (); #endif /* UARTS_USE_TERMIOS */ /* * Do device-specific initialization */ BSP_output_char = _BSP_output_char; m5xx_uart_initialize(SCI1_MINOR); status = rtems_io_register_name ("/dev/tty0", major, SCI1_MINOR); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); m5xx_uart_initialize(SCI2_MINOR); status = rtems_io_register_name ("/dev/tty1", major, SCI2_MINOR); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); /* Now register the RTEMS console */ status = rtems_io_register_name ("/dev/console", major, CONSOLE_MINOR); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); return RTEMS_SUCCESSFUL; }
rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; rtems_termios_initialize(); /* * Register Device Names */ status = rtems_io_register_name( "/dev/console", major, 0 ); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred(status); status = rtems_io_register_name( "/dev/console_b", major, 1 ); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred(status); /* * Initialize Hardware */ LEON_REG.UART_Control_1 |= LEON_REG_UART_CTRL_RE | LEON_REG_UART_CTRL_TE; LEON_REG.UART_Control_2 |= LEON_REG_UART_CTRL_RE | LEON_REG_UART_CTRL_TE | LEON_REG_UART_CTRL_RI; /* rx irq default enable for remote debugger */ LEON_REG.UART_Status_1 = 0; LEON_REG.UART_Status_2 = 0; #if (CONSOLE_USE_INTERRUPTS) console_initialize_interrupts(); #endif return RTEMS_SUCCESSFUL; }
/** * @brief Console device driver INITIALIZE entry point * * Initilizes the I/O console driver. * * @param major diver major number * @param minor driver minor mumber * @param *arg pointer to parameters * @return status code */ rtems_device_driver console_initialize(rtems_device_major_number major, rtems_device_minor_number minor, void *arg) { rtems_status_code status; /* Set up TERMIOS */ rtems_termios_initialize (); /* Do device-specific initialization */ /* Allready done in bspstart.c -> gba_textmode(CO60); */ /* Register the device */ status = rtems_io_register_name ("/dev/console", major, 0); if (status != RTEMS_SUCCESSFUL) { printk("Error registering console device!\n"); rtems_fatal_error_occurred (status); } printk("Initialized GBA console\n\n"); return RTEMS_SUCCESSFUL; }
static void erc32_console_initialize( int minor ) { console_data *cd = &Console_Port_Data [minor]; cd->bActive = false; cd->pDeviceContext = 0; /* * Initialize the Termios infrastructure. If Termios has already * been initialized by another device driver, then this call will * have no effect. */ rtems_termios_initialize(); /* * Initialize Hardware */ #if (CONSOLE_USE_INTERRUPTS) set_vector(erc32_console_isr_a, CONSOLE_UART_A_TRAP, 1); set_vector(erc32_console_isr_b, CONSOLE_UART_B_TRAP, 1); #endif }
/* * Initialize and register the device */ rtems_device_driver console_initialize(rtems_device_major_number major, rtems_device_minor_number minor,/* ignored */ void *arg ) { rtems_status_code status = RTEMS_SUCCESSFUL; int chan,entry,ttynum; char tty_name[] = "/dev/tty00"; /* * Set up TERMIOS */ rtems_termios_initialize (); /* * init BRG allocataion */ sccBRGinit(); ttynum = 0; for (entry = 0; (entry < sizeof(channel_list)/sizeof(channel_list[0])) && (status == RTEMS_SUCCESSFUL); entry++) { if (channel_list[entry].driver_mode != CONS_MODE_UNUSED) { /* * Do device-specific initialization */ chan = channel_list[entry].minor; m8xx_scc_mode[chan] = channel_list[entry].driver_mode; sccInitialize (chan); /* * build device name */ tty_name[sizeof(tty_name)-2] = '0'+ttynum; ttynum++; /* * Register the device */ status = rtems_io_register_name (tty_name, major, channel_list[entry].minor); if (status != RTEMS_SUCCESSFUL) { rtems_fatal_error_occurred (status); } } } /* * register /dev/console */ status = rtems_io_register_name ("/dev/console", major, CONSOLE_CHN); if (status != RTEMS_SUCCESSFUL) { rtems_fatal_error_occurred (status); } /* * enable printk support */ BSP_output_chan = PRINTK_CHN; return RTEMS_SUCCESSFUL; }
/* * Initialize and register the device */ rtems_device_driver console_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *arg ) { rtems_status_code status; rtems_device_minor_number console_minor; /* * Set up TERMIOS if needed */ console_minor = CONSOLE_MINOR; #if UARTS_USE_TERMIOS == 1 rtems_termios_initialize (); #else rtems_termios_initialize (); #endif /* UARTS_USE_TERMIOS */ /* * Do common initialization. */ m8xx_uart_initialize(); /* * Do device-specific initialization */ #if 0 m8xx_uart_smc_initialize(SMC1_MINOR); /* /dev/tty4 */ m8xx_uart_smc_initialize(SMC2_MINOR); /* /dev/tty5 */ #endif m8xx_uart_scc_initialize(SCC1_MINOR); /* /dev/tty0 */ m8xx_uart_scc_initialize(SCC2_MINOR); /* /dev/tty1 */ #if 0 /* used as network connections */ m8xx_uart_scc_initialize(SCC3_MINOR); /* /dev/tty2 */ m8xx_uart_scc_initialize(SCC4_MINOR); /* /dev/tty3 */ #endif /* * Set up interrupts */ m8xx_uart_interrupts_initialize(); status = rtems_io_register_name ("/dev/tty0", major, SCC1_MINOR); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); chmod("/dev/tty0",0660); chown("/dev/tty0",2,0); status = rtems_io_register_name ("/dev/tty1", major, SCC2_MINOR); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); chmod("/dev/tty1",0660); chown("/dev/tty1",2,0); #if 0 status = rtems_io_register_name ("/dev/tty2", major, SCC3_MINOR); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); status = rtems_io_register_name ("/dev/tty3", major, SCC4_MINOR); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); status = rtems_io_register_name ("/dev/tty4", major, SMC1_MINOR); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); status = rtems_io_register_name ("/dev/tty5", major, SMC2_MINOR); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); #endif /* Now register the RTEMS console */ status = rtems_io_register_name ("/dev/console", major, console_minor); if (status != RTEMS_SUCCESSFUL) rtems_fatal_error_occurred (status); chmod("/dev/console",0666); chown("/dev/console",2,0); return RTEMS_SUCCESSFUL; }
static int init_ide() { int rc = 0; char buf[512]; #ifndef COMBO_RTEMS rtems_status_code sc = RTEMS_SUCCESSFUL; size_t abort_index = 0; #ifndef FAT_BENCH rtems_rfs_format_config rfs_config = { .block_size = 0, /* The size of a block. */ .group_blocks = 0, /* The number of blocks in a group. */ .group_inodes = 0, /* The number of inodes in a group. */ .inode_overhead = 0, /* The percentage overhead allocated to inodes. */ .max_name_length = 0, /* The maximum length of a name. */ .initialise_inodes = 0, /* Initialise the inode tables to all ones. */ .verbose = 1 /* Is the format verbose. */ }; #endif #endif #ifdef COMBO_RTEMS printk(".. COMBO RTEMS ..\n"); #else printk(".. VANILLA RTEMS ..\n"); #endif #ifdef FAT_BENCH printk(".. FAT benchmarking. Preparing/formatting partition\n"); #ifdef FORMAT_ENABLE rc = msdos_format("/dev/hda", NULL); if (rc != 0) printk(".. msdos_format(/dev/hda) failed: %s\n", strerror(errno)); else printk(".. msdos_format is OK\n"); #endif #else printk(".. RFS benchmarking. Preparing/formatting disk\n"); #if 0 { int i; #define PARTITION_COUNT 1 rtems_bdpart_partition created_partitions[PARTITION_COUNT]; static const rtems_bdpart_format format = { .mbr = { .type = RTEMS_BDPART_FORMAT_MBR, .disk_id = 0xdeadbeef, .dos_compatibility = false } }; static const unsigned distribution[PARTITION_COUNT] = { 1 }; memset(&created_partitions[0], 0, sizeof(created_partitions)); for (i = 0; i < PARTITION_COUNT; ++i) { rtems_bdpart_to_partition_type(RTEMS_BDPART_MBR_EMPTY, created_partitions[i].type); } sc = rtems_bdpart_create("/dev/hda", &format, &created_partitions[0], &distribution[0], PARTITION_COUNT); if (sc != 0) printk(".. rtems_bdpart_create(/dev/hda) failed: %s\n", strerror(errno)); else printk(".. rtems_bdpart_create() is OK\n"); sc = rtems_bdpart_write("/dev/hda", &format, &created_partitions[0], PARTITION_COUNT); if (sc != 0) printk(".. rtems_bdpart_write(/dev/hda) failed: %s\n", strerror(errno)); else printk(".. rtems_bdpart_write() is OK\n"); } #endif #ifdef FORMAT_ENABLE rc = rtems_rfs_format("/dev/hda", &rfs_config); if (rc != 0) printk(".. rfs_format(/dev/hda) failed: %s\n", strerror(errno)); else printk(".. rfs_format is OK\n"); #endif #endif /* FAT_BENCH */ /* Create a mount point folder */ rc = mkdir("/mnt", 0777); if(rc == -1) { printk("mkdir failed: %s\n", strerror(errno)); exit(3); } #ifdef COMBO_RTEMS /* Some checking needed for combo version only */ rc = open(DEVNAME, O_RDWR); if(rc == -1) { printk("dev open failed: %s\n", strerror(errno)); exit(1); } if(read(rc, buf, 512) != 512) { printk("dev read failed: %s\n", strerror(errno)); exit(2); } close(rc); /* end of checking */ #if 0 rc = rtems_ide_part_table_initialize(DEVNAME); if(rc != RTEMS_SUCCESSFUL) { printk("ide_part_table failed: %i\n", rc); exit(4); } #endif rc = rtems_fsmount(&fs_table, 1, NULL); if(rc != 1) { printk("rtems_fsmount failed: %i\n", rc); exit(5); } #else #if 0 sc = rtems_bdpart_register_from_disk("/dev/hda"); if (sc != RTEMS_SUCCESSFUL) { printk("read partition table failed: %s\n", rtems_status_text(sc)); exit(4); } else { printk(".. partition table of \"/dev/hda\" is OK\n"); } #endif rc = rtems_fsmount(fstab, sizeof(fstab) / sizeof(fstab [0]), &abort_index); if (rc != 0) { printk("mount failed: %s\n", strerror(errno)); exit(5); } else { printk(".. %s() returns OK\n", __FUNCTION__); } if (abort_index) printf("mount aborted at %zu\n", abort_index); #endif printf(".. CompactFlash logical disk has been mounted\n"); return 0; } static int iozone_func(int argc, char** argv) { return main_iozone(argc, argv); } static rtems_shell_cmd_t iozone_cmd = { "iozone", /* name */ "execute iozone", /* help text */ "misc", /* topic */ iozone_func, /* function */ NULL, /* alias */ NULL /* next */ }; /* initialize shell, network and telnet */ static void init_telnetd() { rtems_status_code rc; rtems_termios_initialize(); rtems_initialize_network(); rtems_telnetd_initialize(); #ifdef COMBO_RTEMS rc = rtems_shell_init("SHll", 32000, 100, "/dev/tty1", 1, 0); #else rc = rtems_shell_init("SHll", 32000, 100, "/dev/tty1", 1, 0, NULL); #endif if(rc != RTEMS_SUCCESSFUL) printk("init shell on console failed\n"); }