0a1ae6180f40ac115716ba9985d4f0a105a8365e
[platform/kernel/u-boot.git] / board / google / chromebook_link / link.c
1 /*
2  * Copyright (C) 2014 Google, Inc
3  *
4  * SPDX-License-Identifier:     GPL-2.0+
5  */
6
7 #include <common.h>
8 #include <asm/gpio.h>
9
10 int arch_early_init_r(void)
11 {
12         return 0;
13 }
14
15 static const struct pch_gpio_set1 pch_gpio_set1_mode = {
16         .gpio0 = GPIO_MODE_GPIO,  /* NMI_DBG# */
17         .gpio3 = GPIO_MODE_GPIO,  /* ALS_INT# */
18         .gpio5 = GPIO_MODE_GPIO,  /* SIM_DET */
19         .gpio7 = GPIO_MODE_GPIO,  /* EC_SCI# */
20         .gpio8 = GPIO_MODE_GPIO,  /* EC_SMI# */
21         .gpio9 = GPIO_MODE_GPIO,  /* RECOVERY# */
22         .gpio10 = GPIO_MODE_GPIO, /* SPD vector D3 */
23         .gpio11 = GPIO_MODE_GPIO, /* smbalert#, let's keep it initialized */
24         .gpio12 = GPIO_MODE_GPIO, /* TP_INT# */
25         .gpio14 = GPIO_MODE_GPIO, /* Touch_INT_L */
26         .gpio15 = GPIO_MODE_GPIO, /* EC_LID_OUT# (EC_WAKE#) */
27         .gpio21 = GPIO_MODE_GPIO, /* EC_IN_RW */
28         .gpio24 = GPIO_MODE_GPIO, /* DDR3L_EN */
29         .gpio28 = GPIO_MODE_GPIO, /* SLP_ME_CSW_DEV# */
30 };
31
32 static const struct pch_gpio_set1 pch_gpio_set1_direction = {
33         .gpio0 = GPIO_DIR_INPUT,
34         .gpio3 = GPIO_DIR_INPUT,
35         .gpio5 = GPIO_DIR_INPUT,
36         .gpio7 = GPIO_DIR_INPUT,
37         .gpio8 = GPIO_DIR_INPUT,
38         .gpio9 = GPIO_DIR_INPUT,
39         .gpio10 = GPIO_DIR_INPUT,
40         .gpio11 = GPIO_DIR_INPUT,
41         .gpio12 = GPIO_DIR_INPUT,
42         .gpio14 = GPIO_DIR_INPUT,
43         .gpio15 = GPIO_DIR_INPUT,
44         .gpio21 = GPIO_DIR_INPUT,
45         .gpio24 = GPIO_DIR_OUTPUT,
46         .gpio28 = GPIO_DIR_INPUT,
47 };
48
49 static const struct pch_gpio_set1 pch_gpio_set1_level = {
50         .gpio1 = GPIO_LEVEL_HIGH,
51         .gpio6 = GPIO_LEVEL_HIGH,
52         .gpio24 = GPIO_LEVEL_LOW,
53 };
54
55 static const struct pch_gpio_set1 pch_gpio_set1_invert = {
56         .gpio7 = GPIO_INVERT,
57         .gpio8 = GPIO_INVERT,
58         .gpio12 = GPIO_INVERT,
59         .gpio14 = GPIO_INVERT,
60         .gpio15 = GPIO_INVERT,
61 };
62
63 static const struct pch_gpio_set2 pch_gpio_set2_mode = {
64         .gpio36 = GPIO_MODE_GPIO, /* W_DISABLE_L */
65         .gpio41 = GPIO_MODE_GPIO, /* SPD vector D0 */
66         .gpio42 = GPIO_MODE_GPIO, /* SPD vector D1 */
67         .gpio43 = GPIO_MODE_GPIO, /* SPD vector D2 */
68         .gpio57 = GPIO_MODE_GPIO, /* PCH_SPI_WP_D */
69         .gpio60 = GPIO_MODE_GPIO, /* DRAMRST_CNTRL_PCH */
70 };
71
72 static const struct pch_gpio_set2 pch_gpio_set2_direction = {
73         .gpio36 = GPIO_DIR_OUTPUT,
74         .gpio41 = GPIO_DIR_INPUT,
75         .gpio42 = GPIO_DIR_INPUT,
76         .gpio43 = GPIO_DIR_INPUT,
77         .gpio57 = GPIO_DIR_INPUT,
78         .gpio60 = GPIO_DIR_OUTPUT,
79 };
80
81 static const struct pch_gpio_set2 pch_gpio_set2_level = {
82         .gpio36 = GPIO_LEVEL_HIGH,
83         .gpio60 = GPIO_LEVEL_HIGH,
84 };
85
86 static const struct pch_gpio_set3 pch_gpio_set3_mode = {
87 };
88
89 static const struct pch_gpio_set3 pch_gpio_set3_direction = {
90 };
91
92 static const struct pch_gpio_set3 pch_gpio_set3_level = {
93 };
94
95 static const struct pch_gpio_map link_gpio_map = {
96         .set1 = {
97                 .mode      = &pch_gpio_set1_mode,
98                 .direction = &pch_gpio_set1_direction,
99                 .level     = &pch_gpio_set1_level,
100                 .invert    = &pch_gpio_set1_invert,
101         },
102         .set2 = {
103                 .mode      = &pch_gpio_set2_mode,
104                 .direction = &pch_gpio_set2_direction,
105                 .level     = &pch_gpio_set2_level,
106         },
107         .set3 = {
108                 .mode      = &pch_gpio_set3_mode,
109                 .direction = &pch_gpio_set3_direction,
110                 .level     = &pch_gpio_set3_level,
111         },
112 };
113
114 int board_early_init_f(void)
115 {
116         ich_gpio_set_gpio_map(&link_gpio_map);
117
118         return 0;
119 }