diff options
| author | Yuri Tikhonov <yur@pollux.denx.de> | 2008-03-18 13:27:57 +0100 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2008-03-18 22:24:48 +0100 | 
| commit | 46bc0a938779aa1d664b847d36b08aa00f22e539 (patch) | |
| tree | a56a9b130f6aa83714d6f624238a99e172d0eebd | |
| parent | 3d61018643a2cd38c145aa6dde53f3f5f1a0e9cf (diff) | |
| download | olio-uboot-2014.01-46bc0a938779aa1d664b847d36b08aa00f22e539.tar.xz olio-uboot-2014.01-46bc0a938779aa1d664b847d36b08aa00f22e539.zip | |
Fix backlight in the lwmon5 POST.
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>
| -rw-r--r-- | board/lwmon5/lwmon5.c | 24 | ||||
| -rw-r--r-- | post/board/lwmon5/fpga.c | 10 | ||||
| -rw-r--r-- | post/board/lwmon5/sysmon.c | 33 | 
3 files changed, 29 insertions, 38 deletions
| diff --git a/board/lwmon5/lwmon5.c b/board/lwmon5/lwmon5.c index 7c5f6ccf1..e5fa25937 100644 --- a/board/lwmon5/lwmon5.c +++ b/board/lwmon5/lwmon5.c @@ -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. diff --git a/post/board/lwmon5/fpga.c b/post/board/lwmon5/fpga.c index dca7a30a9..2d95b5e50 100644 --- a/post/board/lwmon5/fpga.c +++ b/post/board/lwmon5/fpga.c @@ -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) diff --git a/post/board/lwmon5/sysmon.c b/post/board/lwmon5/sysmon.c index 0eae4c151..f7e51a3cf 100644 --- a/post/board/lwmon5/sysmon.c +++ b/post/board/lwmon5/sysmon.c @@ -49,18 +49,16 @@  #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) |