]> git.ipfire.org Git - people/ms/u-boot.git/blob - board/samsung/smdk5420/smdk5420.c
dm: exynos: Tidy up GPIO headers
[people/ms/u-boot.git] / board / samsung / smdk5420 / smdk5420.c
1 /*
2 * Copyright (C) 2013 Samsung Electronics
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6
7 #include <common.h>
8 #include <fdtdec.h>
9 #include <asm/io.h>
10 #include <i2c.h>
11 #include <lcd.h>
12 #include <spi.h>
13 #include <errno.h>
14 #include <asm/gpio.h>
15 #include <asm/arch/board.h>
16 #include <asm/arch/cpu.h>
17 #include <asm/arch/pinmux.h>
18 #include <asm/arch/system.h>
19 #include <asm/arch/dp_info.h>
20 #include <power/tps65090_pmic.h>
21
22 DECLARE_GLOBAL_DATA_PTR;
23
24 #ifdef CONFIG_USB_EHCI_EXYNOS
25 static int board_usb_vbus_init(void)
26 {
27 /* Enable VBUS power switch */
28 gpio_direction_output(EXYNOS5420_GPIO_X26, 1);
29
30 /* VBUS turn ON time */
31 mdelay(3);
32
33 return 0;
34 }
35 #endif
36
37 int exynos_init(void)
38 {
39 #ifdef CONFIG_USB_EHCI_EXYNOS
40 board_usb_vbus_init();
41 #endif
42 return 0;
43 }
44
45 #ifdef CONFIG_LCD
46 static int has_edp_bridge(void)
47 {
48 int node;
49
50 node = fdtdec_next_compatible(gd->fdt_blob, 0, COMPAT_PARADE_PS8625);
51
52 /* No node for bridge in device tree. */
53 if (node <= 0)
54 return 0;
55
56 /* Default is with bridge ic */
57 return 1;
58 }
59
60 void exynos_lcd_power_on(void)
61 {
62 int ret;
63
64 #ifdef CONFIG_POWER_TPS65090
65 ret = tps65090_init();
66 if (ret < 0) {
67 printf("%s: tps65090_init() failed\n", __func__);
68 return;
69 }
70
71 tps65090_fet_enable(6);
72 #endif
73
74 mdelay(5);
75
76 /* TODO(ajaykumar.rs@samsung.com): Use device tree */
77 gpio_direction_output(EXYNOS5420_GPIO_X35, 1); /* EDP_SLP# */
78 mdelay(10);
79 gpio_direction_output(EXYNOS5420_GPIO_Y77, 1); /* EDP_RST# */
80 gpio_direction_input(EXYNOS5420_GPIO_X26); /* EDP_HPD */
81 gpio_set_pull(EXYNOS5420_GPIO_X26, S5P_GPIO_PULL_NONE);
82
83 if (has_edp_bridge())
84 if (parade_init(gd->fdt_blob))
85 printf("%s: ps8625_init() failed\n", __func__);
86 }
87
88 void exynos_backlight_on(unsigned int onoff)
89 {
90 /* For PWM */
91 gpio_cfg_pin(EXYNOS5420_GPIO_B20, S5P_GPIO_FUNC(0x1));
92 gpio_set_value(EXYNOS5420_GPIO_B20, 1);
93
94 #ifdef CONFIG_POWER_TPS65090
95 tps65090_fet_enable(1);
96 #endif
97 }
98 #endif
99
100 int board_get_revision(void)
101 {
102 return 0;
103 }