blob: ae2d02a48da87a304ab7f598c0381f897688ae02 [file] [log] [blame]
Raul E Rangelb3c41322020-05-20 14:07:41 -06001/* SPDX-License-Identifier: GPL-2.0-or-later */
2
3#include <baseboard/gpio.h>
4#include <baseboard/variants.h>
5#include <boardid.h>
6#include <gpio.h>
7#include <soc/gpio.h>
8#include <ec/google/chromeec/ec.h>
Furquan Shaikhda459c42020-06-18 01:34:48 -07009
10static const struct soc_amd_gpio berknip_bid1_gpio_set_stage_ram[] = {
Kevin Chiucf081ab2020-08-28 10:11:26 +080011 /* PEN_DETECT_ODL - no used */
12 PAD_NC(GPIO_4),
13 /* PEN_POWER_EN - no used */
14 PAD_NC(GPIO_5),
Furquan Shaikhda459c42020-06-18 01:34:48 -070015 /* DMIC_SEL */
16 PAD_GPO(GPIO_13, LOW), // Select Camera 1 Dmic
Raul E Rangelb3c41322020-05-20 14:07:41 -060017 /* USB_OC4_L - USB_A1 */
Furquan Shaikhf6b2e6f2020-07-17 15:30:47 -070018 PAD_NF(GPIO_14, USB_OC4_L, PULL_NONE),
Raul E Rangelb3c41322020-05-20 14:07:41 -060019 /* USB_OC2_L - USB A0 */
Furquan Shaikhf6b2e6f2020-07-17 15:30:47 -070020 PAD_NF(GPIO_18, USB_OC2_L, PULL_NONE),
Furquan Shaikh65e11172020-07-21 21:51:27 -070021 /* EN_PWR_WIFI */
22 PAD_GPO(GPIO_29, HIGH),
Furquan Shaikhda459c42020-06-18 01:34:48 -070023 /* EN_PWR_TOUCHPAD_PS2 */
24 PAD_GPO(GPIO_67, HIGH),
25 /* MST_GPIO_2 (Fw Update HDMI hub) */
26 PAD_GPI(GPIO_86, PULL_NONE),
Furquan Shaikh79dba4a2020-08-04 17:16:33 -070027 /* EN_DEV_BEEP_L */
28 PAD_GPO(GPIO_89, HIGH),
Furquan Shaikhda459c42020-06-18 01:34:48 -070029 /* MST_GPIO_3 (Fw Update HDMI hub) */
30 PAD_GPI(GPIO_90, PULL_NONE),
Furquan Shaikhcc6c41f2020-08-04 20:16:55 -070031 /* USI_RESET */
32 PAD_GPO(GPIO_140, HIGH),
33};
34
35static const struct soc_amd_gpio berknip_bid2_gpio_set_stage_ram[] = {
Kevin Chiucf081ab2020-08-28 10:11:26 +080036 /* PEN_DETECT_ODL - no used */
37 PAD_NC(GPIO_4),
38 /* PEN_POWER_EN - no used */
39 PAD_NC(GPIO_5),
Furquan Shaikh79dba4a2020-08-04 17:16:33 -070040 /* EN_DEV_BEEP_L */
41 PAD_GPO(GPIO_89, HIGH),
Furquan Shaikh5474f8e2020-08-05 14:54:39 -070042 /* TP */
43 PAD_NC(GPIO_90),
Furquan Shaikhcc6c41f2020-08-04 20:16:55 -070044 /* USI_RESET */
45 PAD_GPO(GPIO_140, HIGH),
Raul E Rangelb3c41322020-05-20 14:07:41 -060046};
Furquan Shaikhda459c42020-06-18 01:34:48 -070047
Kevin Chiucf081ab2020-08-28 10:11:26 +080048static const struct soc_amd_gpio berknip_gpio_set_stage_ram[] = {
49 /* PEN_DETECT_ODL - no used */
50 PAD_NC(GPIO_4),
51 /* PEN_POWER_EN - no used */
52 PAD_NC(GPIO_5),
53};
54
Raul E Rangelb3c41322020-05-20 14:07:41 -060055const struct soc_amd_gpio *variant_override_gpio_table(size_t *size)
56{
57 uint32_t board_version;
58
59 /*
60 * If board version cannot be read, assume that this is an older revision of the board
61 * and so apply overrides. If board version is provided by the EC, then apply overrides
62 * if version < 2.
63 */
Eric Laif209b182020-10-20 02:44:53 +080064 if (google_chromeec_cbi_get_board_version(&board_version) != 0)
Raul E Rangelb3c41322020-05-20 14:07:41 -060065 board_version = 1;
66
67 if (board_version <= 1) {
Furquan Shaikhda459c42020-06-18 01:34:48 -070068 *size = ARRAY_SIZE(berknip_bid1_gpio_set_stage_ram);
69 return berknip_bid1_gpio_set_stage_ram;
Furquan Shaikhcc6c41f2020-08-04 20:16:55 -070070 } else if (board_version <= 2) {
71 *size = ARRAY_SIZE(berknip_bid2_gpio_set_stage_ram);
72 return berknip_bid2_gpio_set_stage_ram;
Raul E Rangelb3c41322020-05-20 14:07:41 -060073 }
74
Kevin Chiucf081ab2020-08-28 10:11:26 +080075 *size = ARRAY_SIZE(berknip_gpio_set_stage_ram);
76 return berknip_gpio_set_stage_ram;
Raul E Rangelb3c41322020-05-20 14:07:41 -060077}