EXYNOS: support TRATS board display function
This patch support TRATS board configuration and display function. Signed-off-by: Donghwa Lee <dh09.lee@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
		
							parent
							
								
									bba09e9f56
								
							
						
					
					
						commit
						51b1cd6df7
					
				|  | @ -2,6 +2,7 @@ | ||||||
|  * Copyright (C) 2011 Samsung Electronics |  * Copyright (C) 2011 Samsung Electronics | ||||||
|  * Heungjun Kim <riverful.kim@samsung.com> |  * Heungjun Kim <riverful.kim@samsung.com> | ||||||
|  * Kyungmin Park <kyungmin.park@samsung.com> |  * Kyungmin Park <kyungmin.park@samsung.com> | ||||||
|  |  * Donghwa Lee <dh09.lee@samsung.com> | ||||||
|  * |  * | ||||||
|  * See file CREDITS for list of people who contributed to this |  * See file CREDITS for list of people who contributed to this | ||||||
|  * project. |  * project. | ||||||
|  | @ -23,11 +24,14 @@ | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <common.h> | #include <common.h> | ||||||
|  | #include <lcd.h> | ||||||
| #include <asm/io.h> | #include <asm/io.h> | ||||||
| #include <asm/arch/cpu.h> | #include <asm/arch/cpu.h> | ||||||
| #include <asm/arch/gpio.h> | #include <asm/arch/gpio.h> | ||||||
| #include <asm/arch/mmc.h> | #include <asm/arch/mmc.h> | ||||||
| #include <asm/arch/clock.h> | #include <asm/arch/clock.h> | ||||||
|  | #include <asm/arch/clk.h> | ||||||
|  | #include <asm/arch/mipi_dsim.h> | ||||||
| #include <asm/arch/watchdog.h> | #include <asm/arch/watchdog.h> | ||||||
| #include <asm/arch/power.h> | #include <asm/arch/power.h> | ||||||
| #include <pmic.h> | #include <pmic.h> | ||||||
|  | @ -357,3 +361,145 @@ int board_early_init_f(void) | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | static void lcd_reset(void) | ||||||
|  | { | ||||||
|  | 	struct exynos4_gpio_part2 *gpio2 = | ||||||
|  | 		(struct exynos4_gpio_part2 *)samsung_get_base_gpio_part2(); | ||||||
|  | 
 | ||||||
|  | 	s5p_gpio_direction_output(&gpio2->y4, 5, 1); | ||||||
|  | 	udelay(10000); | ||||||
|  | 	s5p_gpio_direction_output(&gpio2->y4, 5, 0); | ||||||
|  | 	udelay(10000); | ||||||
|  | 	s5p_gpio_direction_output(&gpio2->y4, 5, 1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static int lcd_power(void) | ||||||
|  | { | ||||||
|  | 	int ret = 0; | ||||||
|  | 	struct pmic *p = get_pmic(); | ||||||
|  | 
 | ||||||
|  | 	if (pmic_probe(p)) | ||||||
|  | 		return 0; | ||||||
|  | 
 | ||||||
|  | 	/* LDO15 voltage: 2.2v */ | ||||||
|  | 	ret |= pmic_reg_write(p, MAX8997_REG_LDO15CTRL, 0x1c | EN_LDO); | ||||||
|  | 	/* LDO13 voltage: 3.0v */ | ||||||
|  | 	ret |= pmic_reg_write(p, MAX8997_REG_LDO13CTRL, 0x2c | EN_LDO); | ||||||
|  | 
 | ||||||
|  | 	if (ret) { | ||||||
|  | 		puts("MAX8997 LDO setting error!\n"); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static struct mipi_dsim_config dsim_config = { | ||||||
|  | 	.e_interface		= DSIM_VIDEO, | ||||||
|  | 	.e_virtual_ch		= DSIM_VIRTUAL_CH_0, | ||||||
|  | 	.e_pixel_format		= DSIM_24BPP_888, | ||||||
|  | 	.e_burst_mode		= DSIM_BURST_SYNC_EVENT, | ||||||
|  | 	.e_no_data_lane		= DSIM_DATA_LANE_4, | ||||||
|  | 	.e_byte_clk		= DSIM_PLL_OUT_DIV8, | ||||||
|  | 	.hfp			= 1, | ||||||
|  | 
 | ||||||
|  | 	.p			= 3, | ||||||
|  | 	.m			= 120, | ||||||
|  | 	.s			= 1, | ||||||
|  | 
 | ||||||
|  | 	/* D-PHY PLL stable time spec :min = 200usec ~ max 400usec */ | ||||||
|  | 	.pll_stable_time	= 500, | ||||||
|  | 
 | ||||||
|  | 	/* escape clk : 10MHz */ | ||||||
|  | 	.esc_clk		= 20 * 1000000, | ||||||
|  | 
 | ||||||
|  | 	/* stop state holding counter after bta change count 0 ~ 0xfff */ | ||||||
|  | 	.stop_holding_cnt	= 0x7ff, | ||||||
|  | 	/* bta timeout 0 ~ 0xff */ | ||||||
|  | 	.bta_timeout		= 0xff, | ||||||
|  | 	/* lp rx timeout 0 ~ 0xffff */ | ||||||
|  | 	.rx_timeout		= 0xffff, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static struct exynos_platform_mipi_dsim s6e8ax0_platform_data = { | ||||||
|  | 	.lcd_panel_info = NULL, | ||||||
|  | 	.dsim_config = &dsim_config, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static struct mipi_dsim_lcd_device mipi_lcd_device = { | ||||||
|  | 	.name	= "s6e8ax0", | ||||||
|  | 	.id	= -1, | ||||||
|  | 	.bus_id	= 0, | ||||||
|  | 	.platform_data	= (void *)&s6e8ax0_platform_data, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static int mipi_power(void) | ||||||
|  | { | ||||||
|  | 	int ret = 0; | ||||||
|  | 	struct pmic *p = get_pmic(); | ||||||
|  | 
 | ||||||
|  | 	if (pmic_probe(p)) | ||||||
|  | 		return 0; | ||||||
|  | 
 | ||||||
|  | 	/* LDO3 voltage: 1.1v */ | ||||||
|  | 	ret |= pmic_reg_write(p, MAX8997_REG_LDO3CTRL, 0x6 | EN_LDO); | ||||||
|  | 	/* LDO4 voltage: 1.8v */ | ||||||
|  | 	ret |= pmic_reg_write(p, MAX8997_REG_LDO4CTRL, 0x14 | EN_LDO); | ||||||
|  | 
 | ||||||
|  | 	if (ret) { | ||||||
|  | 		puts("MAX8997 LDO setting error!\n"); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void init_panel_info(vidinfo_t *vid) | ||||||
|  | { | ||||||
|  | 	vid->vl_freq	= 60; | ||||||
|  | 	vid->vl_col	= 720; | ||||||
|  | 	vid->vl_row	= 1280; | ||||||
|  | 	vid->vl_width	= 720; | ||||||
|  | 	vid->vl_height	= 1280; | ||||||
|  | 	vid->vl_clkp	= CONFIG_SYS_HIGH; | ||||||
|  | 	vid->vl_hsp	= CONFIG_SYS_LOW; | ||||||
|  | 	vid->vl_vsp	= CONFIG_SYS_LOW; | ||||||
|  | 	vid->vl_dp	= CONFIG_SYS_LOW; | ||||||
|  | 
 | ||||||
|  | 	vid->vl_bpix	= 32; | ||||||
|  | 	vid->dual_lcd_enabled = 0; | ||||||
|  | 
 | ||||||
|  | 	/* s6e8ax0 Panel */ | ||||||
|  | 	vid->vl_hspw	= 5; | ||||||
|  | 	vid->vl_hbpd	= 10; | ||||||
|  | 	vid->vl_hfpd	= 10; | ||||||
|  | 
 | ||||||
|  | 	vid->vl_vspw	= 2; | ||||||
|  | 	vid->vl_vbpd	= 1; | ||||||
|  | 	vid->vl_vfpd	= 13; | ||||||
|  | 	vid->vl_cmd_allow_len = 0xf; | ||||||
|  | 
 | ||||||
|  | 	vid->win_id = 3; | ||||||
|  | 	vid->cfg_gpio = NULL; | ||||||
|  | 	vid->backlight_on = NULL; | ||||||
|  | 	vid->lcd_power_on = NULL;	/* lcd_power_on in mipi dsi driver */ | ||||||
|  | 	vid->reset_lcd = lcd_reset; | ||||||
|  | 
 | ||||||
|  | 	vid->init_delay = 0; | ||||||
|  | 	vid->power_on_delay = 0; | ||||||
|  | 	vid->reset_delay = 0; | ||||||
|  | 	vid->interface_mode = FIMD_RGB_INTERFACE; | ||||||
|  | 	vid->mipi_enabled = 1; | ||||||
|  | 
 | ||||||
|  | 	strcpy(s6e8ax0_platform_data.lcd_panel_name, mipi_lcd_device.name); | ||||||
|  | 	s6e8ax0_platform_data.lcd_power = lcd_power; | ||||||
|  | 	s6e8ax0_platform_data.mipi_power = mipi_power; | ||||||
|  | 	s6e8ax0_platform_data.phy_enable = set_mipi_phy_ctrl; | ||||||
|  | 	s6e8ax0_platform_data.lcd_panel_info = (void *)vid; | ||||||
|  | 	exynos_mipi_dsi_register_lcd_device(&mipi_lcd_device); | ||||||
|  | 	s6e8ax0_init(); | ||||||
|  | 	exynos_set_dsim_platform_data(&s6e8ax0_platform_data); | ||||||
|  | 
 | ||||||
|  | 	setenv("lcdinfo", "lcd=s6e8ax0"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -213,4 +213,12 @@ | ||||||
| #define CONFIG_USB_GADGET_S3C_UDC_OTG | #define CONFIG_USB_GADGET_S3C_UDC_OTG | ||||||
| #define CONFIG_USB_GADGET_DUALSPEED | #define CONFIG_USB_GADGET_DUALSPEED | ||||||
| 
 | 
 | ||||||
|  | /* LCD */ | ||||||
|  | #define CONFIG_EXYNOS_FB | ||||||
|  | #define CONFIG_LCD | ||||||
|  | #define CONFIG_FB_ADDR		0x52504000 | ||||||
|  | #define CONFIG_S6E8AX0 | ||||||
|  | #define CONFIG_EXYNOS_MIPI_DSIM | ||||||
|  | #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE	(1280 * 720 * 4) | ||||||
|  | 
 | ||||||
| #endif	/* __CONFIG_H */ | #endif	/* __CONFIG_H */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue