@ -29,14 +29,34 @@ static const unsigned long baudrate_table[] = CONFIG_SYS_BAUDRATE_TABLE;
static void serial_find_console_or_panic ( void )
{
const void * blob = gd - > fdt_blob ;
struct udevice * dev ;
int node ;
if ( CONFIG_IS_ENABLED ( OF_CONTROL ) & & gd - > fdt_ blob) {
if ( CONFIG_IS_ENABLED ( OF_CONTROL ) & & blob ) {
/* Check for a chosen console */
node = fdtdec_get_chosen_node ( gd - > fdt_blob , " stdout-path " ) ;
node = fdtdec_get_chosen_node ( blob , " stdout-path " ) ;
if ( node < 0 ) {
const char * str , * p , * name ;
/*
* Deal with things like
* stdout - path = " serial0:115200n8 " ;
*
* We need to look up the alias and then follow it to
* the correct node .
*/
str = fdtdec_get_chosen_prop ( blob , " stdout-path " ) ;
if ( str ) {
p = strchr ( str , ' : ' ) ;
name = fdt_get_alias_namelen ( blob , str ,
p ? p - str : strlen ( str ) ) ;
if ( name )
node = fdt_path_offset ( blob , name ) ;
}
}
if ( node < 0 )
node = fdt_path_offset ( gd - > fdt_blob , " console " ) ;
node = fdt_path_offset ( blob , " console " ) ;
if ( ! uclass_get_device_by_of_offset ( UCLASS_SERIAL , node ,
& dev ) ) {
gd - > cur_serial_dev = dev ;
@ -48,14 +68,14 @@ static void serial_find_console_or_panic(void)
* bind it anyway .
*/
if ( node > 0 & &
! lists_bind_fdt ( gd - > dm_root , gd - > fdt_ blob, node , & dev ) ) {
! lists_bind_fdt ( gd - > dm_root , blob , node , & dev ) ) {
if ( ! device_probe ( dev ) ) {
gd - > cur_serial_dev = dev ;
return ;
}
}
}
if ( ! SPL_BUILD | | ! CONFIG_IS_ENABLED ( OF_CONTROL ) | | ! gd - > fdt_ blob) {
if ( ! SPL_BUILD | | ! CONFIG_IS_ENABLED ( OF_CONTROL ) | | ! blob ) {
/*
* Try to use CONFIG_CONS_INDEX if available ( it is numbered
* from 1 ! ) .