summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/raspberrypi/console/fb.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/raspberrypi/console/fb.c')
-rw-r--r--c/src/lib/libbsp/arm/raspberrypi/console/fb.c12
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;
}