Fix backlight in the lwmon5 POST.
authorYuri Tikhonov <yur@pollux.denx.de>
Tue, 18 Mar 2008 12:27:57 +0000 (13:27 +0100)
committerWolfgang Denk <wd@denx.de>
Tue, 18 Mar 2008 21:24:48 +0000 (22:24 +0100)
Backlight was switched on even when temperature was too low.

Signed-off-by: Dmitry Rakhchev <rda@emcraft.com>
Signed-off-by: Yuri Tikhonov <yur@emcraft.com>
board/lwmon5/lwmon5.c
post/board/lwmon5/fpga.c
post/board/lwmon5/sysmon.c

index 7c5f6ccf1b0255bf7005784f0f90d4c167b5c9f1..e5fa25937b5e069eeff81cbdaa33471e99627e92 100644 (file)
@@ -567,11 +567,13 @@ unsigned int board_video_init (void)
        return CFG_LIME_BASE_0;
 }
 
-void board_backlight_switch (int flag)
+#define DEFAULT_BRIGHTNESS 0x64
+
+static void board_backlight_brightness(int brightness)
 {
-       if (flag) {
+       if (brightness > 0) {
                /* pwm duty, lamp on */
-               out_be32((void *)(CFG_FPGA_BASE_0 + 0x00000024), 0x64);
+               out_be32((void *)(CFG_FPGA_BASE_0 + 0x00000024), brightness);
                out_be32((void *)(CFG_FPGA_BASE_0 + 0x00000020), 0x701);
        } else {
                /* lamp off */
@@ -580,6 +582,22 @@ void board_backlight_switch (int flag)
        }
 }
 
+void board_backlight_switch (int flag)
+{
+       char * param;
+       int rc;
+
+       if (flag) {
+               param = getenv("brightness");
+               rc = param ? simple_strtol(param, NULL, 10) : -1;
+               if (rc < 0)
+                       rc = DEFAULT_BRIGHTNESS;
+       } else {
+               rc = 0;
+       }
+       board_backlight_brightness(rc);
+}
+
 #if defined(CONFIG_CONSOLE_EXTRA_INFO)
 /*
  * Return text to be printed besides the logo.
index dca7a30a98e714012c2b04ff6d34d214fc21aa2e..2d95b5e50ae6f302ebdffbceb24db3862b599d40 100644 (file)
@@ -41,16 +41,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #define FPGA_RAM_END           0xC4203FFF
 #define FPGA_STAT              0xC400000C
 
-#define FPGA_PWM_CTRL_REG      0xC4000020
-#define FPGA_PWM_TV_REG                0xC4000024
-
-/* Turn on backlight, set brightness */
-void fpga_backlight_enable(int pwm)
-{
-       out_be16((void *)FPGA_PWM_CTRL_REG, 0x0701);
-       out_be16((void *)FPGA_PWM_TV_REG, pwm);
-}
-
 #if CONFIG_POST & CFG_POST_BSPEC3
 
 static int one_scratch_test(uint value)
index 0eae4c1515d5b3a1ce1089b14bb881c2541222c9..f7e51a3cfe6aa18ef2dcd8f3876308d37d14031c 100644 (file)
 #include <watchdog.h>
 #include <i2c.h>
 
+#if defined(CONFIG_VIDEO)
+#include <mb862xx.h>
+#endif
+
 #if CONFIG_POST & CFG_POST_SYSMON
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define DEFAULT_BRIGHTNESS 50
-
 /* from dspic.c */
 extern int dspic_read(ushort reg);
-/* from fpga.c */
-extern void fpga_backlight_enable(int v);
-
-static int sysmon_temp_invalid;
 
 #define        RELOC(x) if (x != NULL) x = (void *) ((ulong) (x) + gd->reloc_off)
 
@@ -70,7 +68,6 @@ typedef struct sysmon_table_s sysmon_table_t;
 static void sysmon_dspic_init (sysmon_t * this);
 static int sysmon_dspic_read (sysmon_t * this, uint addr);
 static void sysmon_backlight_disable (sysmon_table_t * this);
-static void sysmon_backlight_enable (sysmon_table_t * this);
 
 struct sysmon_s
 {
@@ -120,7 +117,7 @@ static sysmon_table_t sysmon_table[] =
      100, 1000, -0x8000, 0x7FFF, 0xFFFF, 0x8000+4750, 0x8000+5250, 0,
                                          0x8000+4750, 0x8000+5250, 0, 0x12CA},
 
-    {"+ 5 V standby", "V", &sysmon_dspic, NULL, sysmon_backlight_enable,
+    {"+ 5 V standby", "V", &sysmon_dspic, NULL, NULL,
      100, 1000, -0x8000, 0x7FFF, 0xFFFF, 0x8000+4750, 0x8000+5250, 0,
                                          0x8000+4750, 0x8000+5250, 0, 0x12C6},
 };
@@ -205,23 +202,9 @@ static int sysmon_dspic_read (sysmon_t * this, uint addr)
 
 static void sysmon_backlight_disable (sysmon_table_t * this)
 {
-       if (!this->val_valid_alt)
-               sysmon_temp_invalid = 1;
-}
-
-static void sysmon_backlight_enable (sysmon_table_t * this)
-{
-       char * param;
-       int rc;
-
-       if (!sysmon_temp_invalid) {
-               param = getenv("brightness");
-               rc = param ? simple_strtol(param, NULL, 10) : -1;
-               if (rc >= 0)
-                       fpga_backlight_enable(rc);
-               else
-                       fpga_backlight_enable(DEFAULT_BRIGHTNESS);
-       }
+#if defined(CONFIG_VIDEO)
+       board_backlight_switch(this->val_valid_alt);
+#endif
 }
 
 int sysmon_post_test (int flags)