diff options
Diffstat (limited to 'c/src/lib/libbsp/arm/realview-pbx-a9')
4 files changed, 69 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am index 9410a30a4a..7b961b36d3 100644 --- a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am @@ -43,6 +43,8 @@ include_bsp_HEADERS += ../shared/include/arm-gic-regs.h include_bsp_HEADERS += ../shared/include/arm-gic-tm27.h include_bsp_HEADERS += ../shared/include/arm-pl011.h include_bsp_HEADERS += ../shared/include/arm-pl011-regs.h +include_bsp_HEADERS += ../shared/include/arm-pl111-fb.h +include_bsp_HEADERS += ../shared/include/arm-pl111-regs.h include_bsp_HEADERS += include/irq.h include_libcpu_HEADERS = ../../../libcpu/arm/shared/include/arm-cp15.h @@ -124,6 +126,10 @@ libbsp_a_CPPFLAGS += -I$(srcdir)/../../../libcpu/arm/shared/include # Start hooks libbsp_a_SOURCES += startup/bspstarthooks.c +# Framebuffer +libbsp_a_SOURCES += ../shared/arm-pl111-fb.c +libbsp_a_SOURCES += startup/fb-config.c + if HAS_SMP libbsp_a_SOURCES += ../shared/arm-a9mpcore-smp.c endif diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/include/bsp.h b/c/src/lib/libbsp/arm/realview-pbx-a9/include/bsp.h index c25c9f62dc..05c0fd088d 100644 --- a/c/src/lib/libbsp/arm/realview-pbx-a9/include/bsp.h +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/include/bsp.h @@ -19,6 +19,8 @@ #define BSP_FEATURE_IRQ_EXTENSION +#define BSP_HAS_FRAME_BUFFER 1 + #ifndef ASM #include <rtems.h> @@ -41,7 +43,10 @@ extern "C" { typedef enum { BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_INSTALL, - BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_REMOVE + BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_REMOVE, + BSP_ARM_PL111_FATAL_REGISTER_DEV, + BSP_ARM_PL111_FATAL_SEM_CREATE, + BSP_ARM_PL111_FATAL_SEM_RELEASE } rvpbxa9_fatal_code; void rvpbxa9_fatal(rvpbxa9_fatal_code code) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/preinstall.am b/c/src/lib/libbsp/arm/realview-pbx-a9/preinstall.am index 56e4ac8ac1..fad0cf93f2 100644 --- a/c/src/lib/libbsp/arm/realview-pbx-a9/preinstall.am +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/preinstall.am @@ -126,6 +126,14 @@ $(PROJECT_INCLUDE)/bsp/arm-pl011-regs.h: ../shared/include/arm-pl011-regs.h $(PR $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/arm-pl011-regs.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/arm-pl011-regs.h +$(PROJECT_INCLUDE)/bsp/arm-pl111-fb.h: ../shared/include/arm-pl111-fb.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/arm-pl111-fb.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/arm-pl111-fb.h + +$(PROJECT_INCLUDE)/bsp/arm-pl111-regs.h: ../shared/include/arm-pl111-regs.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/arm-pl111-regs.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/arm-pl111-regs.h + $(PROJECT_INCLUDE)/bsp/irq.h: include/irq.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq.h diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/startup/fb-config.c b/c/src/lib/libbsp/arm/realview-pbx-a9/startup/fb-config.c new file mode 100644 index 0000000000..c2c4aaae00 --- /dev/null +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/startup/fb-config.c @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <info@embedded-brains.de> + * + * 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. + */ + +#include <bsp/arm-pl111-fb.h> +#include <bsp.h> + +static const pl111_fb_config fb_config = { + .regs = (volatile pl111 *) 0x10020000, + + /* + * Values obtained from "RealView Platform Baseboard Explore for Cortex-A9 + * User Guide" section 4.6.1 "Display resolutions and display memory + * organization". + */ + .timing0 = 0x3f1f3f9c, + .timing1 = 0x090b61df, + .timing2 = 0x067f1800, + + .timing3 = 0x0, + .control = PL111_LCD_CONTROL_LCD_TFT + | PL111_LCD_CONTROL_LCD_BPP(PL111_LCD_CONTROL_LCD_BPP_16), + .power_delay_in_us = 100000 +}; + +const pl111_fb_config *arm_pl111_fb_get_config(void) +{ + return &fb_config; +} + +void arm_pl111_fb_pins_set_up(const pl111_fb_config *cfg) +{ + /* TODO */ +} + +void arm_pl111_fb_pins_tear_down(const pl111_fb_config *cfg) +{ + /* TODO */ +} |