[U-Boot] [PATCH 5/6] smdk5420: Implement callbacks needed by exynos_fb driver
Ajay Kumar
ajaykumar.rs at samsung.com
Mon Sep 30 13:20:54 CEST 2013
Add callbacks to set up DP-HPD, backlight and LCD power
on SMDK5420.
Signed-off-by: Ajay Kumar <ajaykumar.rs at samsung.com>
---
board/samsung/smdk5420/smdk5420.c | 118 +++++++++++---------------------------
1 file changed, 34 insertions(+), 84 deletions(-)
diff --git a/board/samsung/smdk5420/smdk5420.c b/board/samsung/smdk5420/smdk5420.c
index cf76455..3f29ce0 100644
--- a/board/samsung/smdk5420/smdk5420.c
+++ b/board/samsung/smdk5420/smdk5420.c
@@ -137,98 +137,48 @@ int board_mmc_init(bd_t *bis)
#endif
#ifdef CONFIG_LCD
-void cfg_lcd_gpio(void)
+void exynos_cfg_lcd_gpio(void)
{
- struct exynos5_gpio_part1 *gpio1 =
- (struct exynos5_gpio_part1 *)samsung_get_base_gpio_part1();
+ struct exynos5420_gpio_part2 *gpio2 =
+ (struct exynos5420_gpio_part2 *)samsung_get_base_gpio_part2();
- /* For Backlight */
+ /* Set Hotplug detect for DP */
+ s5p_gpio_cfg_pin(&gpio2->x0, 7, GPIO_FUNC(0x3));
+}
+
+void exynos_backlight_on(unsigned int onoff)
+{
+ struct exynos5420_gpio_part1 *gpio1 =
+ (struct exynos5420_gpio_part1 *)samsung_get_base_gpio_part1();
+
+ struct exynos5420_gpio_part2 *gpio2 =
+ (struct exynos5420_gpio_part2 *)samsung_get_base_gpio_part2();
+
+ /* For PWM */
s5p_gpio_cfg_pin(&gpio1->b2, 0, GPIO_OUTPUT);
s5p_gpio_set_value(&gpio1->b2, 0, 1);
- /* LCD power on */
- s5p_gpio_cfg_pin(&gpio1->x1, 5, GPIO_OUTPUT);
- s5p_gpio_set_value(&gpio1->x1, 5, 1);
-
- /* Set Hotplug detect for DP */
- s5p_gpio_cfg_pin(&gpio1->x0, 7, GPIO_FUNC(0x3));
+ /* BL_EN */
+ s5p_gpio_cfg_pin(&gpio2->x1, 5, GPIO_OUTPUT);
+ s5p_gpio_set_value(&gpio2->x1, 5, 1);
}
-vidinfo_t panel_info = {
- .vl_freq = 60,
- .vl_col = 2560,
- .vl_row = 1600,
- .vl_width = 2560,
- .vl_height = 1600,
- .vl_clkp = CONFIG_SYS_LOW,
- .vl_hsp = CONFIG_SYS_LOW,
- .vl_vsp = CONFIG_SYS_LOW,
- .vl_dp = CONFIG_SYS_LOW,
- .vl_bpix = 4, /* LCD_BPP = 2^4, for output conosle on LCD */
-
- /* wDP panel timing infomation */
- .vl_hspw = 32,
- .vl_hbpd = 80,
- .vl_hfpd = 48,
-
- .vl_vspw = 6,
- .vl_vbpd = 37,
- .vl_vfpd = 3,
- .vl_cmd_allow_len = 0xf,
-
- .win_id = 3,
- .cfg_gpio = cfg_lcd_gpio,
- .backlight_on = NULL,
- .lcd_power_on = NULL,
- .reset_lcd = NULL,
- .dual_lcd_enabled = 0,
-
- .init_delay = 0,
- .power_on_delay = 0,
- .reset_delay = 0,
- .interface_mode = FIMD_RGB_INTERFACE,
- .dp_enabled = 1,
-};
-
-static struct edp_device_info edp_info = {
- .disp_info = {
- .h_res = 2560,
- .h_sync_width = 32,
- .h_back_porch = 80,
- .h_front_porch = 48,
- .v_res = 1600,
- .v_sync_width = 6,
- .v_back_porch = 37,
- .v_front_porch = 3,
- .v_sync_rate = 60,
- },
- .lt_info = {
- .lt_status = DP_LT_NONE,
- },
- .video_info = {
- .master_mode = 0,
- .bist_mode = DP_DISABLE,
- .bist_pattern = NO_PATTERN,
- .h_sync_polarity = 0,
- .v_sync_polarity = 0,
- .interlaced = 0,
- .color_space = COLOR_RGB,
- .dynamic_range = VESA,
- .ycbcr_coeff = COLOR_YCBCR601,
- .color_depth = COLOR_8,
- },
-};
-
-static struct exynos_dp_platform_data dp_platform_data = {
- .phy_enable = set_dp_phy_ctrl,
- .edp_dev_info = &edp_info,
-};
-
-void init_panel_info(vidinfo_t *vid)
+void exynos_lcd_power_on(void)
{
- vid->rgb_mode = MODE_RGB_P,
-
- exynos_set_dp_platform_data(&dp_platform_data);
+ int pmic_bus, pmic_i2caddr, ldo38_reg, old_bus;
+ u8 value;
+
+ /* enable VDD_28IO_DP: LDO38 should be at 2.8V */
+ pmic_bus = 4;
+ pmic_i2caddr = 0x66;
+ ldo38_reg = 0x62;
+ value = 0x78;
+
+ old_bus = i2c_get_bus_num();
+ i2c_set_bus_num(pmic_bus);
+ if (i2c_write(pmic_i2caddr, ldo38_reg, 1, &value, 1))
+ printf("i2c write fail. Failed to enable VDD_28IO_DP\n");
+ i2c_set_bus_num(old_bus);
}
#endif
--
1.7.12.4
More information about the U-Boot
mailing list