]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/samsung/smdk5420/smdk5420.c
Merge git://git.denx.de/u-boot-dm
[karo-tx-uboot.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_request(EXYNOS5420_GPIO_X35, "edp_slp#");
78         gpio_direction_output(EXYNOS5420_GPIO_X35, 1);  /* EDP_SLP# */
79         mdelay(10);
80         gpio_request(EXYNOS5420_GPIO_Y77, "edp_rst#");
81         gpio_direction_output(EXYNOS5420_GPIO_Y77, 1);  /* EDP_RST# */
82         gpio_request(EXYNOS5420_GPIO_X26, "edp_hpd");
83         gpio_direction_input(EXYNOS5420_GPIO_X26);      /* EDP_HPD */
84         gpio_set_pull(EXYNOS5420_GPIO_X26, S5P_GPIO_PULL_NONE);
85
86         if (has_edp_bridge())
87                 if (parade_init(gd->fdt_blob))
88                         printf("%s: ps8625_init() failed\n", __func__);
89 }
90
91 void exynos_backlight_on(unsigned int onoff)
92 {
93         /* For PWM */
94         gpio_request(EXYNOS5420_GPIO_B20, "backlight_on");
95         gpio_cfg_pin(EXYNOS5420_GPIO_B20, S5P_GPIO_FUNC(0x1));
96         gpio_set_value(EXYNOS5420_GPIO_B20, 1);
97
98 #ifdef CONFIG_POWER_TPS65090
99         tps65090_fet_enable(1);
100 #endif
101 }
102 #endif
103
104 int board_get_revision(void)
105 {
106         return 0;
107 }