Matt DeVillier | abd561b | 2023-08-04 13:07:56 -0500 | [diff] [blame^] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
| 2 | |
| 3 | #include <soc/gpio.h> |
| 4 | #include <mainboard/google/rambi/irqroute.h> |
| 5 | |
| 6 | /* NCORE GPIOs */ |
| 7 | static const struct soc_gpio_map gpncore_gpio_map[] = { |
| 8 | GPIO_FUNC2, /* S0_NC00 - INT_HDMI_HPD - INT */ |
| 9 | GPIO_FUNC2, /* S0_NC01 - HDMI_DDCDATA_SW */ |
| 10 | GPIO_FUNC2, /* S0_NC02 - HDMI_DDCCLK_SW */ |
| 11 | GPIO_NC, /* S0_NC03 - NC */ |
| 12 | GPIO_NC, /* S0_NC04 - NC */ |
| 13 | GPIO_NC, /* S0_NC05 - NC */ |
| 14 | GPIO_FUNC2, /* S0_NC06 - EDP_HPD_L */ |
| 15 | GPIO_INPUT, /* S0_NC07 - DDI1_DDCDATA - STRAP */ |
| 16 | GPIO_NC, /* S0_NC08 - NC */ |
| 17 | GPIO_OUT_HIGH, /* S0_NC09 - SOC_DISP_ON_C */ |
| 18 | GPIO_FUNC2, /* S0_NC10 - SOC_EDP_BLON_C */ |
| 19 | GPIO_FUNC2, /* S0_NC11 - SOC_DPST_PWM_C */ |
| 20 | GPIO_NC, /* S0_NC12 - NC */ |
| 21 | GPIO_INPUT, /* S0_NC13 - GPIO_NC13 - STRAP */ |
| 22 | GPIO_NC, /* S0_NC14 - NC */ |
| 23 | GPIO_DEFAULT, /* S0_NC15 - XDP_GPIO_S0_NC15 */ |
| 24 | GPIO_DEFAULT, /* S0_NC16 - XDP_GPIO_S0_NC16 */ |
| 25 | GPIO_DEFAULT, /* S0_NC17 - XDP_GPIO_S0_NC17 */ |
| 26 | GPIO_DEFAULT, /* S0_NC18 - XDP_GPIO_S0_NC18 */ |
| 27 | GPIO_DEFAULT, /* S0_NC19 - XDP_GPIO_S0_NC19 */ |
| 28 | GPIO_DEFAULT, /* S0_NC20 - XDP_GPIO_S0_NC20 */ |
| 29 | GPIO_DEFAULT, /* S0_NC21 - XDP_GPIO_S0_NC21 */ |
| 30 | GPIO_DEFAULT, /* S0_NC22 - XDP_GPIO_S0_NC22 */ |
| 31 | GPIO_DEFAULT, /* S0_NC23 - XDP_GPIO_S0_NC23 */ |
| 32 | GPIO_NC, /* S0_NC24 - NC */ |
| 33 | GPIO_NC, /* S0_NC25 - NC */ |
| 34 | GPIO_NC, /* S0_NC26 - NC */ |
| 35 | GPIO_END |
| 36 | }; |
| 37 | |
| 38 | /* SCORE GPIOs */ |
| 39 | static const struct soc_gpio_map gpscore_gpio_map[] = { |
| 40 | GPIO_ACPI_SCI, /* S0_SC000 - SOC_KBC_SCI - INT */ |
| 41 | GPIO_FUNC2, /* S0_SC001 - SATA_DEVSLP_C */ |
| 42 | GPIO_NC, /* S0-SC002 - SATA_LED_R_N (NC/PU) */ |
| 43 | GPIO_FUNC1, /* S0-SC003 - PCIE_CLKREQ_IMAGE# */ |
| 44 | GPIO_FUNC1, /* S0-SC004 - PCIE_CLKREQ_WLAN# */ |
| 45 | GPIO_NC, /* S0-SC005 - PCIE_CLKREQ_LAN# (NC) */ |
| 46 | GPIO_NC, /* S0-SC006 - PCIE_CLKREQ3# (NC) */ |
| 47 | GPIO_FUNC(2, PULL_DISABLE, 10K), /* S0-SC007 - SD3_WP external pull */ |
| 48 | GPIO_NC, /* S0-SC008 - ACZ_RST# (NC) */ |
| 49 | GPIO_NC, /* S0-SC009 - ACZ_SYNC (NC) */ |
| 50 | GPIO_NC, /* S0-SC010 - ACZ_BCLK (NC) */ |
| 51 | GPIO_NC, /* S0-SC011 - ACZ_STDOUT (NC) */ |
| 52 | GPIO_NC, /* S0-SC012 - PCH_AZ_CODEC_SDIN0 (NC) */ |
| 53 | GPIO_NC, /* S0-SC013 - NC */ |
| 54 | GPIO_INPUT, /* S0-SC014 - DET_TRIGGER - INT */ |
| 55 | GPIO_INPUT, /* S0-SC015 - AJACK_MICPRES_L - INT */ |
| 56 | GPIO_FUNC(3, PULL_DOWN, 20K), /* S0-SC016 - MMC1_45_CLK */ |
| 57 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC017 - MMC1_45_D[0] */ |
| 58 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC018 - MMC1_45_D[1] */ |
| 59 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC019 - MMC1_45_D[2] */ |
| 60 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC020 - MMC1_45_D[3] */ |
| 61 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC021 - MMC1_45_D[4] */ |
| 62 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC022 - MMC1_45_D[5] */ |
| 63 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC023 - MMC1_45_D[6] */ |
| 64 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC024 - MMC1_45_D[7] */ |
| 65 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC025 - MMC1_45_CMD */ |
| 66 | GPIO_FUNC(3, PULL_UP, 20K), /* S0-SC026 - MMC1_45_RST */ |
| 67 | GPIO_NC, /* S0-SC027 - NC */ |
| 68 | GPIO_NC, /* S0-SC028 - NC */ |
| 69 | GPIO_NC, /* S0-SC029 - NC */ |
| 70 | GPIO_NC, /* S0-SC030 - NC */ |
| 71 | GPIO_NC, /* S0-SC031 - NC */ |
| 72 | GPIO_NC, /* S0-SC032 - NC */ |
| 73 | GPIO_FUNC(1, PULL_DOWN, 20K), /* S0-SC033 - SD3_CLK */ |
| 74 | GPIO_FUNC(1, PULL_UP, 20K), /* S0-SC034 - SD3_D0 */ |
| 75 | GPIO_FUNC(1, PULL_UP, 20K), /* S0-SC035 - SD3_D1 */ |
| 76 | GPIO_FUNC(1, PULL_UP, 20K), /* S0-SC036 - SD3_D2 */ |
| 77 | GPIO_FUNC(1, PULL_UP, 20K), /* S0-SC037 - SD3_D3 */ |
| 78 | GPIO_FUNC(1, PULL_UP, 20K), /* S0-SC038 - SD3_CD# */ |
| 79 | GPIO_FUNC(1, PULL_UP, 20K), /* S0-SC039 - SD3_CMD */ |
| 80 | GPIO_NC, /* S0-SC040 - SDMMC3_1P8_EN - TP3 */ |
| 81 | GPIO_FUNC(1, PULL_UP, 20K), /* S0-SC041 - SDIO3_PWR_EN# */ |
| 82 | GPIO_FUNC1, /* S0-SC042 - LPC_LAD0 */ |
| 83 | GPIO_FUNC1, /* S0-SC043 - LPC-LAD1 */ |
| 84 | GPIO_FUNC1, /* S0-SC044 - LPC_LAD2 */ |
| 85 | GPIO_FUNC1, /* S0-SC045 - LPC_LAD3 */ |
| 86 | GPIO_FUNC1, /* S0-SC046 - LPC_LFRAME# */ |
| 87 | GPIO_FUNC1, /* S0-SC047 - PCLK_TPM */ |
| 88 | GPIO_FUNC1, /* S0-SC048 - CLK_PCI_EC */ |
| 89 | GPIO_FUNC1, /* S0-SC049 - LPC_CLKRUN_L */ |
| 90 | GPIO_NC, /* S0-SC050 - IRQ_SERIRQ */ |
| 91 | GPIO_NC, /* S0-SC051 - SMB_SOC_DATA (XDP) */ |
| 92 | GPIO_NC, /* S0-SC052 - SMB_SOC_CLK (XDP) */ |
| 93 | GPIO_NC, /* S0-SC053 - SMB_SOC_ALERTB (NC) */ |
| 94 | GPIO_DEFAULT, /* S0-SC054 - NC */ |
| 95 | GPIO_DIRQ, /* S0-SC055 - TRACKPAD_INT_DX */ |
| 96 | GPIO_INPUT, /* S0-SC056 - GPIO_S0_SC_56 - STRAP */ |
| 97 | GPIO_FUNC1, /* S0-SC057 - PCH_UART_TXD */ |
| 98 | GPIO_INPUT, /* S0-SC058 - SIM_DET_C */ |
| 99 | GPIO_INPUT_LEGACY, /* S0-SC059 - EC_IN_RW_C */ |
| 100 | GPIO_NC, /* S0-SC060 - NC */ |
| 101 | GPIO_FUNC1, /* S0-SC061 - SOC_UART_RX */ |
| 102 | GPIO_FUNC1, /* S0-SC062 - I2S_BCLK */ |
| 103 | GPIO_FUNC1, /* S0-SC063 - I2S_LRCLK */ |
| 104 | GPIO_FUNC1, /* S0-SC064 - I2S_DIN */ |
| 105 | GPIO_FUNC1, /* S0-SC065 - I2S_DOUT */ |
| 106 | GPIO_FUNC1, /* S0-SC066 - SIO_SPI_CS# */ |
| 107 | GPIO_FUNC1, /* S0-SC067 - SIO_SPI_MISO */ |
| 108 | GPIO_FUNC1, /* S0-SC068 - SIO_SPI_MOSI */ |
| 109 | GPIO_FUNC1, /* S0-SC069 - SIO_SPI_CLK */ |
| 110 | GPIO_DIRQ, /* S0-SC070 - ALS_INT_L - INT */ |
| 111 | GPIO_NC, /* S0-SC071 - NC */ |
| 112 | GPIO_DIRQ, /* S0-SC072 - TOUCH_INT_L_DX */ |
| 113 | GPIO_NC, /* S0-SC073 - NC */ |
| 114 | GPIO_NC, /* S0-SC074 - SIO_UART2_RXD (NC) */ |
| 115 | GPIO_NC, /* S0-SC075 - SIO_UART2_TXD (NC) */ |
| 116 | GPIO_INPUT, /* S0-SC076 - BIOS_STRAP - STRAP */ |
| 117 | GPIO_INPUT, /* S0-SC077 - SOC_OVERRIDE - STRAP */ |
| 118 | GPIO_FUNC1, /* S0-SC078 - I2C_0_SDA */ |
| 119 | GPIO_FUNC1, /* S0-SC079 - I2C_0_SCL */ |
| 120 | GPIO_FUNC1, /* S0-SC080 - I2C_1_SDA */ |
| 121 | GPIO_FUNC1, /* S0-SC081 - I2C_1_SCL */ |
| 122 | GPIO_NC, /* S0-SC082 - NC */ |
| 123 | GPIO_NC, /* S0-SC083 - NC */ |
| 124 | GPIO_NC, /* S0-SC084 - NC */ |
| 125 | GPIO_NC, /* S0-SC085 - NC */ |
| 126 | GPIO_FUNC1, /* S0-SC086 - I2C_4_SDA */ |
| 127 | GPIO_FUNC1, /* S0-SC087 - I2C_4_SCL */ |
| 128 | GPIO_FUNC1, /* S0-SC088 - I2C_5_SDA */ |
| 129 | GPIO_FUNC1, /* S0-SC089 - I2C_5_SCL */ |
| 130 | GPIO_NC, /* S0-SC090 - NC */ |
| 131 | GPIO_NC, /* S0-SC091 - NC */ |
| 132 | GPIO_NC, /* S0-SC092 - I2C_NGFF_SDA (NC/PU) */ |
| 133 | GPIO_NC, /* S0-SC093 - I2C_NGFF_SCL (NC/PU) */ |
| 134 | GPIO_NC, /* S0-SC094 - NC */ |
| 135 | GPIO_NC, /* S0-SC095 - SIO_PWM1 (NC) */ |
| 136 | GPIO_FUNC1, /* S0-SC096 - I2S_MCLK */ |
| 137 | GPIO_NC, /* S0-SC097 - NC */ |
| 138 | GPIO_NC, /* S0-SC098 - NC */ |
| 139 | GPIO_NC, /* S0-SC099 - NC */ |
| 140 | GPIO_NC, /* S0-SC100 - NC */ |
| 141 | GPIO_DIRQ, /* S0-SC101 - KBD_IRQ# */ |
| 142 | GPIO_END |
| 143 | }; |
| 144 | |
| 145 | /* SSUS GPIOs */ |
| 146 | static const struct soc_gpio_map gpssus_gpio_map[] = { |
| 147 | GPIO_ACPI_WAKE, /* S500 - PCH_WAKE# */ |
| 148 | GPIO_ACPI_WAKE, /* S501 - TRACKPAD_INT# - INT */ |
| 149 | GPIO_ACPI_WAKE, /* S502 - TOUCH_INT# - INT */ |
| 150 | GPIO_FUNC6, /* S503 - LTE_WAKE_L# - INT */ |
| 151 | GPIO_NC, /* S504 - SOC_JTAG2_TDO (NC/PU) */ |
| 152 | GPIO_FUNC1, /* S505 - SUS_CLK_WLAN (NC) */ |
| 153 | GPIO_INPUT_PU, /* S506 - PCH_SPI_WP */ |
| 154 | GPIO_ACPI_SMI, /* S507 - SOC_KBC_SMI - INT */ |
| 155 | GPIO_NC, /* S508 - NC */ |
| 156 | GPIO_DIRQ, /* S509 - MUX_AUD_INT1# */ |
| 157 | GPIO_OUT_HIGH, /* S510 - WIFI_DISABLE_L */ |
| 158 | GPIO_FUNC0, /* S511 - SUSPWRDNACK */ |
| 159 | GPIO_FUNC0, /* S512 - WIFI_SUSCLK */ |
| 160 | GPIO_FUNC0, /* S513 - SLP_SX */ |
| 161 | GPIO_NC, /* S514 - NC */ |
| 162 | GPIO_FUNC0, /* S515 - WLAN_WAKE_L - INT */ |
| 163 | GPIO_FUNC0, /* S516 - PCH_PWRBTN_L */ |
| 164 | GPIO_NC, /* S517 - NC */ |
| 165 | GPIO_FUNC0, /* S518 - SUS_STAT# */ |
| 166 | GPIO_FUNC0, /* S519 - USB_OC0# */ |
| 167 | GPIO_FUNC0, /* S520 - USB_OC1# */ |
| 168 | GPIO_NC, /* S521 - NC */ |
| 169 | GPIO_NC, /* S522 - XDP_GPIO_DFX0 */ |
| 170 | GPIO_NC, /* S523 - XDP_GPIO_DFX1 */ |
| 171 | GPIO_NC, /* S524 - XDP_GPIO_DFX2 */ |
| 172 | GPIO_NC, /* S525 - XDP_GPIO_DFX3 */ |
| 173 | GPIO_NC, /* S526 - XDP_GPIO_DFX4 */ |
| 174 | GPIO_NC, /* S527 - XDP_GPIO_DFX5 */ |
| 175 | GPIO_NC, /* S528 - XDP_GPIO_DFX6 */ |
| 176 | GPIO_NC, /* S529 - XDP_GPIO_DFX7 */ |
| 177 | GPIO_NC, /* S530 - XDP_GPIO_DFX8 */ |
| 178 | GPIO_NC, /* S531 - NC */ |
| 179 | GPIO_NC, /* S532 - NC */ |
| 180 | GPIO_NC, /* S533 - NC */ |
| 181 | GPIO_NC, /* S534 - NC */ |
| 182 | GPIO_OUT_HIGH, /* S535 - LTE_DISABLE_L */ |
| 183 | GPIO_NC, /* S536 - NC */ |
| 184 | GPIO_INPUT, /* S537 - RAM_ID0 */ |
| 185 | GPIO_INPUT, /* S538 - RAM_ID1 */ |
| 186 | GPIO_INPUT, /* S539 - RAM_ID2 */ |
| 187 | GPIO_NC, /* S540 - NC */ |
| 188 | GPIO_NC, /* S541 - NC */ |
| 189 | GPIO_NC, /* S542 - NC */ |
| 190 | GPIO_NC, /* S543 - NC */ |
| 191 | GPIO_END |
| 192 | }; |
| 193 | |
| 194 | static const u8 core_dedicated_irq[GPIO_MAX_DIRQS] = { |
| 195 | [TPAD_IRQ_OFFSET] = TPAD_IRQ_GPIO, |
| 196 | [TOUCH_IRQ_OFFSET] = TOUCH_IRQ_GPIO, |
| 197 | [I8042_IRQ_OFFSET] = I8042_IRQ_GPIO, |
| 198 | [ALS_IRQ_OFFSET] = ALS_IRQ_GPIO, |
| 199 | }; |
| 200 | |
| 201 | static const u8 sus_dedicated_irq[GPIO_MAX_DIRQS] = { |
| 202 | [CODEC_IRQ_OFFSET] = CODEC_IRQ_GPIO, |
| 203 | }; |
| 204 | |
| 205 | static struct soc_gpio_config gpio_config = { |
| 206 | .ncore = gpncore_gpio_map, |
| 207 | .score = gpscore_gpio_map, |
| 208 | .ssus = gpssus_gpio_map, |
| 209 | .core_dirq = &core_dedicated_irq, |
| 210 | .sus_dirq = &sus_dedicated_irq, |
| 211 | }; |
| 212 | |
| 213 | struct soc_gpio_config *mainboard_get_gpios(void) |
| 214 | { |
| 215 | return &gpio_config; |
| 216 | } |