summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-01-01 19:40:31 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-01-10 21:44:24 +0100
commit5b85ccaebc9ca9e470f72df7dca538ff333f22d4 (patch)
tree33b182b905059f4af6828d602f3ddf0cb09ab2e1
parenttestsuite/rtems++: Output format change. (diff)
downloadrtems-5b85ccaebc9ca9e470f72df7dca538ff333f22d4.tar.bz2
bsps/arm: Use handlers for PL111 set up/tear down
-rw-r--r--c/src/lib/libbsp/arm/realview-pbx-a9/startup/fb-config.c36
-rw-r--r--c/src/lib/libbsp/arm/shared/arm-pl111-fb.c7
-rw-r--r--c/src/lib/libbsp/arm/shared/include/arm-pl111-fb.h10
3 files changed, 35 insertions, 18 deletions
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
index c2c4aaae00..130c756232 100644
--- 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
@@ -15,6 +15,26 @@
#include <bsp/arm-pl111-fb.h>
#include <bsp.h>
+static void fb_set_up(const pl111_fb_config *cfg)
+{
+ /* TODO */
+}
+
+static void fb_pins_set_up(const pl111_fb_config *cfg)
+{
+ /* TODO */
+}
+
+static void fb_pins_tear_down(const pl111_fb_config *cfg)
+{
+ /* TODO */
+}
+
+static void fb_tear_down(const pl111_fb_config *cfg)
+{
+ /* TODO */
+}
+
static const pl111_fb_config fb_config = {
.regs = (volatile pl111 *) 0x10020000,
@@ -30,20 +50,14 @@ static const pl111_fb_config fb_config = {
.timing3 = 0x0,
.control = PL111_LCD_CONTROL_LCD_TFT
| PL111_LCD_CONTROL_LCD_BPP(PL111_LCD_CONTROL_LCD_BPP_16),
- .power_delay_in_us = 100000
+ .power_delay_in_us = 100000,
+ .set_up = fb_set_up,
+ .pins_set_up = fb_pins_set_up,
+ .pins_tear_down = fb_pins_tear_down,
+ .tear_down = fb_tear_down
};
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 */
-}
diff --git a/c/src/lib/libbsp/arm/shared/arm-pl111-fb.c b/c/src/lib/libbsp/arm/shared/arm-pl111-fb.c
index 2947eda7d1..fd9967d0ba 100644
--- a/c/src/lib/libbsp/arm/shared/arm-pl111-fb.c
+++ b/c/src/lib/libbsp/arm/shared/arm-pl111-fb.c
@@ -80,6 +80,8 @@ static rtems_status_code pl111_fb_initialize(pl111_fb_context *ctx)
if (ctx->frame_buffer != NULL) {
volatile pl111 *regs = cfg->regs;
+ (*cfg->set_up)(cfg);
+
regs->lcd.upbase = (uint32_t) ctx->frame_buffer;
regs->lcd.timing0 = cfg->timing0;
@@ -88,7 +90,7 @@ static rtems_status_code pl111_fb_initialize(pl111_fb_context *ctx)
regs->lcd.timing3 = cfg->timing3;
regs->lcd.control = cfg->control;
- arm_pl111_fb_pins_set_up(cfg);
+ (*cfg->pins_set_up)(cfg);
regs->lcd.control = cfg->control
| PL111_LCD_CONTROL_LCD_EN;
@@ -119,7 +121,8 @@ static void pl111_fb_destroy(const pl111_fb_context *ctx)
regs->lcd.control = cfg->control;
- arm_pl111_fb_pins_tear_down(cfg);
+ (*cfg->pins_tear_down)(cfg);
+ (*cfg->tear_down)(cfg);
}
static void pl111_fb_get_fix_screen_info(struct fb_fix_screeninfo *info)
diff --git a/c/src/lib/libbsp/arm/shared/include/arm-pl111-fb.h b/c/src/lib/libbsp/arm/shared/include/arm-pl111-fb.h
index 4e448937cf..a4cca90387 100644
--- a/c/src/lib/libbsp/arm/shared/include/arm-pl111-fb.h
+++ b/c/src/lib/libbsp/arm/shared/include/arm-pl111-fb.h
@@ -25,7 +25,7 @@
#include <bsp/arm-pl111-regs.h>
-typedef struct {
+typedef struct pl111_fb_config {
volatile pl111 *regs;
uint32_t timing0;
uint32_t timing1;
@@ -33,12 +33,12 @@ typedef struct {
uint32_t timing3;
uint32_t control;
uint32_t power_delay_in_us;
+ void (*set_up)(const struct pl111_fb_config *cfg);
+ void (*pins_set_up)(const struct pl111_fb_config *cfg);
+ void (*pins_tear_down)(const struct pl111_fb_config *cfg);
+ void (*tear_down)(const struct pl111_fb_config *cfg);
} pl111_fb_config;
const pl111_fb_config *arm_pl111_fb_get_config(void);
-void arm_pl111_fb_pins_set_up(const pl111_fb_config *cfg);
-
-void arm_pl111_fb_pins_tear_down(const pl111_fb_config *cfg);
-
#endif /* LIBBSP_ARM_SHARED_ARM_PL111_FB_H */