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