diff options
Diffstat (limited to 'board/ttcontrol/vision2/vision2.c')
| -rw-r--r-- | board/ttcontrol/vision2/vision2.c | 82 | 
1 files changed, 68 insertions, 14 deletions
| diff --git a/board/ttcontrol/vision2/vision2.c b/board/ttcontrol/vision2/vision2.c index ce4cb78e9..f8ef4fc9c 100644 --- a/board/ttcontrol/vision2/vision2.c +++ b/board/ttcontrol/vision2/vision2.c @@ -37,14 +37,34 @@  #include <fsl_esdhc.h>  #include <fsl_pmic.h>  #include <mc13892.h> +#include <linux/fb.h>  DECLARE_GLOBAL_DATA_PTR;  static u32 system_rev; +extern int mx51_fb_init(struct fb_videomode *mode); +  #ifdef CONFIG_HW_WATCHDOG  #include <watchdog.h> +static struct fb_videomode nec_nl6448bc26_09c = { +	"NEC_NL6448BC26-09C", +	60,	/* Refresh */ +	640,	/* xres */ +	480,	/* yres */ +	37650,	/* pixclock = 26.56Mhz */ +	48,	/* left margin */ +	16,	/* right margin */ +	31,	/* upper margin */ +	12,	/* lower margin */ +	96,	/* hsync-len */ +	2,	/* vsync-len */ +	0,	/* sync */ +	FB_VMODE_NONINTERLACED,	/* vmode */ +	0,	/* flag */ +}; +  void hw_watchdog_reset(void)  {  	int val; @@ -140,19 +160,8 @@ u32 get_board_rev(void)  int dram_init(void)  { -#ifdef CONFIG_SYS_ARM_WITHOUT_RELOC -	gd->bd->bi_dram[0].start = PHYS_SDRAM_1; -	gd->bd->bi_dram[0].size = get_ram_size((long *)PHYS_SDRAM_1, -		PHYS_SDRAM_1_SIZE); -#if (CONFIG_NR_DRAM_BANKS > 1) -	gd->bd->bi_dram[1].start = PHYS_SDRAM_2; -	gd->bd->bi_dram[1].size = get_ram_size((long *)PHYS_SDRAM_2, -		PHYS_SDRAM_2_SIZE); -#endif -#else  	gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1,  		PHYS_SDRAM_1_SIZE); -#endif  	return 0;  } @@ -423,6 +432,9 @@ static void setup_gpios(void)  	mxc_request_iomux(MX51_PIN_CSPI1_RDY, IOMUX_CONFIG_ALT3);  	mxc_iomux_set_pad(MX51_PIN_CSPI1_RDY, 0x82); +	/* PWM Output GPIO1_2 */ +	mxc_request_iomux(MX51_PIN_GPIO1_2, IOMUX_CONFIG_ALT1); +  	/*  	 * Set GPIO1_4 to high and output; it is used to reset  	 * the system on reboot @@ -630,11 +642,35 @@ int board_early_init_f(void)  	return 0;  } +static void backlight(int on) +{ +	if (on) { +		mxc_gpio_set(65, 1); +		udelay(10000); +		mxc_gpio_set(68, 1); +	} else { +		mxc_gpio_set(65, 0); +		mxc_gpio_set(68, 0); +	} +} + +void lcd_enable(void) +{ +	int ret; + +	mxc_request_iomux(MX51_PIN_DI1_PIN2, IOMUX_CONFIG_ALT0); +	mxc_request_iomux(MX51_PIN_DI1_PIN3, IOMUX_CONFIG_ALT0); + +	mxc_gpio_set(2, 1); +	mxc_request_iomux(MX51_PIN_GPIO1_2, IOMUX_CONFIG_ALT0); + +	ret = mx51_fb_init(&nec_nl6448bc26_09c); +	if (ret) +		puts("LCD cannot be configured\n"); +} +  int board_init(void)  { -#ifdef CONFIG_SYS_ARM_WITHOUT_RELOC -	board_early_init_f(); -#endif  	gd->bd->bi_arch_number = MACH_TYPE_TTC_VISION2;	/* board id for linux */  	/* address of boot parameters */  	gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100; @@ -709,3 +745,21 @@ int checkboard(void)  	return 0;  } +int do_vision_lcd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ +	int on; + +	if (argc < 2) +		return cmd_usage(cmdtp); + +	on = (strcmp(argv[1], "on") == 0); +	backlight(on); + +	return 0; +} + +U_BOOT_CMD( +	lcdbl, CONFIG_SYS_MAXARGS, 1, do_vision_lcd, +	"Vision2 Backlight", +	"lcdbl [on|off]\n" +); |