[rtems commit] bsps/arm: Use handlers for PL111 set up/tear down

Sebastian Huber sebh at rtems.org
Fri Jan 10 20:38:07 UTC 2014


Module:    rtems
Branch:    master
Commit:    5b85ccaebc9ca9e470f72df7dca538ff333f22d4
Changeset: http://git.rtems.org/rtems/commit/?id=5b85ccaebc9ca9e470f72df7dca538ff333f22d4

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Jan  1 19:40:31 2014 +0100

bsps/arm: Use handlers for PL111 set up/tear down

---

 .../libbsp/arm/realview-pbx-a9/startup/fb-config.c |   36 ++++++++++++++------
 c/src/lib/libbsp/arm/shared/arm-pl111-fb.c         |    7 +++-
 c/src/lib/libbsp/arm/shared/include/arm-pl111-fb.h |   10 +++---
 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 c2c4aaa..130c756 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 2947eda..fd9967d 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 4e44893..a4cca90 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 */




More information about the vc mailing list