diff options
-rw-r--r-- | c/src/lib/libbsp/arm/raspberrypi/console/fb.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/arm/raspberrypi/console/fb.c b/c/src/lib/libbsp/arm/raspberrypi/console/fb.c index 1900a06eab..815d17e8ca 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/console/fb.c +++ b/c/src/lib/libbsp/arm/raspberrypi/console/fb.c @@ -319,10 +319,20 @@ rtems_device_driver frame_buffer_open( { if ( _Atomic_Flag_test_and_set( &driver_mutex, ATOMIC_ORDER_ACQUIRE ) != 0 ) { - printk( "FB_CIRRUS could not lock driver_mutex\n" ); + printk( "RaspberryPi framebuffer could not lock driver_mutex\n" ); return RTEMS_UNSATISFIED; } + if ( fb_fix_info.smem_start == NULL ) { + int res; + res = rpi_fb_init(); + if ( (res < RPI_FB_INIT_OK) || (fb_fix_info.smem_start == NULL) ) { + _Atomic_Flag_clear( &driver_mutex, ATOMIC_ORDER_RELEASE ); + printk( "RaspberryPi framebuffer initialization failed\n" ); + return RTEMS_UNSATISFIED; + } + } + memset( (void *) fb_fix_info.smem_start, 0, fb_fix_info.smem_len ); return RTEMS_SUCCESSFUL; } |