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
 | 
			
		||||
 * Heungjun Kim <riverful.kim@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
 | 
			
		||||
 * project.
 | 
			
		||||
| 
						 | 
				
			
			@ -23,11 +24,14 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include <common.h>
 | 
			
		||||
#include <lcd.h>
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/arch/cpu.h>
 | 
			
		||||
#include <asm/arch/gpio.h>
 | 
			
		||||
#include <asm/arch/mmc.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/power.h>
 | 
			
		||||
#include <pmic.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -357,3 +361,145 @@ int board_early_init_f(void)
 | 
			
		|||
 | 
			
		||||
	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_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 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue