summaryrefslogtreecommitdiff
path: root/zephyr/projects/corsola/include/gpio_map.h
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/projects/corsola/include/gpio_map.h')
-rw-r--r--zephyr/projects/corsola/include/gpio_map.h171
1 files changed, 171 insertions, 0 deletions
diff --git a/zephyr/projects/corsola/include/gpio_map.h b/zephyr/projects/corsola/include/gpio_map.h
new file mode 100644
index 0000000000..8fda7b77d0
--- /dev/null
+++ b/zephyr/projects/corsola/include/gpio_map.h
@@ -0,0 +1,171 @@
+/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef __ZEPHYR_GPIO_MAP_H
+#define __ZEPHYR_GPIO_MAP_H
+
+#include <devicetree.h>
+#include <gpio_signal.h>
+
+#define GPIO_BATT_PRES_ODL NAMED_GPIO(ec_batt_pres_odl)
+
+#define GPIO_ENTERING_RW GPIO_UNIMPLEMENTED
+
+/* daughterboard GPIO remap */
+#define GPIO_EN_HDMI_PWR GPIO_EC_X_GPIO1
+#define GPIO_USB_C1_FRS_EN GPIO_EC_X_GPIO1
+#define GPIO_USB_C1_PPC_INT_ODL GPIO_X_EC_GPIO2
+#define GPIO_PS185_EC_DP_HPD GPIO_X_EC_GPIO2
+#define GPIO_USB_C1_DP_IN_HPD GPIO_EC_X_GPIO3
+#define GPIO_PS185_PWRDN_ODL GPIO_EC_X_GPIO3
+
+#ifdef CONFIG_PLATFORM_EC_POWER_BUTTON
+ #define PWRBTN_INT() GPIO_INT(GPIO_POWER_BUTTON_L, \
+ GPIO_INT_EDGE_BOTH, \
+ power_button_interrupt)
+#else
+ #define PWRBTN_INT()
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_VOLUME_BUTTONS
+ #define VOLBTN_INT(pin) GPIO_INT(pin, \
+ GPIO_INT_EDGE_BOTH, \
+ button_interrupt)
+#else
+ #define VOLBTN_INT(pin)
+#endif
+
+#ifdef CONFIG_SOC_IT8XXX2
+ #define AP_SPI_INT() GPIO_INT(GPIO_SPI0_CS, \
+ GPIO_INT_EDGE_BOTH, \
+ spi_event)
+#elif defined(CONFIG_SOC_NPCX9M3F)
+ /* The interrupt is configured by dts */
+ #define AP_SPI_INT()
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_TABLET_MODE
+ #define GMR_TABLET_INT() GPIO_INT(GPIO_TABLET_MODE_L, \
+ GPIO_INT_EDGE_BOTH, \
+ gmr_tablet_switch_isr)
+#else
+ #define GMR_TABLET_INT()
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_POWERSEQ_MT8186
+ #define WARM_RST_REQ_INT() GPIO_INT(GPIO_AP_EC_WARM_RST_REQ, \
+ GPIO_INT_EDGE_RISING, \
+ chipset_reset_request_interrupt)
+
+ #define AP_IN_SLEEP_INT() GPIO_INT(GPIO_AP_IN_SLEEP_L, \
+ GPIO_INT_EDGE_BOTH, \
+ power_signal_interrupt)
+
+ #define AP_IN_RST_INT() GPIO_INT(GPIO_AP_EC_SYSRST_ODL, \
+ GPIO_INT_EDGE_BOTH, \
+ power_signal_interrupt)
+
+ #define AP_EC_WDTRST_INT() GPIO_INT(GPIO_AP_EC_WDTRST_L, \
+ GPIO_INT_EDGE_BOTH, \
+ power_signal_interrupt)
+#else
+ #define WARM_RST_REQ_INT()
+ #define AP_IN_SLEEP_INT()
+ #define AP_IN_RST_INT()
+ #define AP_EC_WDTRST_INT()
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_ACCEL_LIS2DW12
+ #define LID_ACCEL_INT() GPIO_INT(GPIO_LID_ACCEL_INT_L, \
+ GPIO_INT_EDGE_FALLING, \
+ lis2dw12_interrupt)
+#else
+ #define LID_ACCEL_INT()
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_EXTPOWER_GPIO
+ #define EXTPWR_INT() GPIO_INT(GPIO_AC_PRESENT, \
+ GPIO_INT_EDGE_BOTH, \
+ extpower_interrupt)
+#else
+ #define EXTPWR_INT()
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_LID_SWITCH
+ #define LID_SWITCH_INT() GPIO_INT(GPIO_LID_OPEN, \
+ GPIO_INT_EDGE_BOTH, \
+ lid_interrupt)
+#else
+ #define LID_SWITCH_INT()
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_SWITCH
+ #define SWITCH_INT() GPIO_INT(GPIO_WP_L, \
+ GPIO_INT_EDGE_BOTH, \
+ switch_interrupt)
+#else
+ #define SWITCH_INT()
+#endif
+
+#ifdef CONFIG_VARIANT_CORSOLA_DB_DETECTION
+ #define X_EC_GPIO2_INT() GPIO_INT(GPIO_X_EC_GPIO2, \
+ GPIO_INT_EDGE_BOTH, \
+ x_ec_interrupt)
+#else
+ #define X_EC_GPIO2_INT()
+#endif
+
+#ifdef CONFIG_VARIANT_CORSOLA_USBA
+ #define USBA_INT() GPIO_INT(GPIO_AP_XHCI_INIT_DONE, \
+ GPIO_INT_EDGE_BOTH, \
+ usb_a0_interrupt)
+#else
+ #define USBA_INT()
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_GMR_TABLET_MODE
+#define GMR_TABLET_MODE_GPIO_L GPIO_TABLET_MODE_L
+#endif
+
+/* TODO: remove after icm426xx driver added */
+static inline void motion_interrupt(enum gpio_signal signal)
+{
+}
+
+/*
+ * Set EC_CROS_GPIO_INTERRUPTS to a space-separated list of GPIO_INT items.
+ *
+ * Each GPIO_INT requires three parameters:
+ * gpio_signal - The enum gpio_signal for the interrupt gpio
+ * interrupt_flags - The interrupt-related flags (e.g. GPIO_INT_EDGE_BOTH)
+ * handler - The platform/ec interrupt handler.
+ *
+ * Ensure that this files includes all necessary headers to declare all
+ * referenced handler functions.
+ *
+ * For example, one could use the follow definition:
+ * #define EC_CROS_GPIO_INTERRUPTS \
+ * GPIO_INT(NAMED_GPIO(h1_ec_pwr_btn_odl), GPIO_INT_EDGE_BOTH, button_print)
+ */
+#define EC_CROS_GPIO_INTERRUPTS \
+ PWRBTN_INT() \
+ VOLBTN_INT(GPIO_VOLUME_DOWN_L) \
+ VOLBTN_INT(GPIO_VOLUME_UP_L) \
+ LID_SWITCH_INT() \
+ WARM_RST_REQ_INT() \
+ AP_IN_SLEEP_INT() \
+ AP_IN_RST_INT() \
+ AP_EC_WDTRST_INT() \
+ GMR_TABLET_INT() \
+ GPIO_INT(GPIO_BASE_IMU_INT_L, \
+ GPIO_INT_EDGE_FALLING, motion_interrupt) \
+ LID_ACCEL_INT() \
+ USBA_INT() \
+ EXTPWR_INT() \
+ SWITCH_INT() \
+ AP_SPI_INT() \
+ X_EC_GPIO2_INT()
+
+#endif /* __ZEPHYR_GPIO_MAP_H */