cpu/x86/smm/pci_resource_store: Store DEV/VEN ID
[coreboot2.git] / src / mainboard / amd / chausie / ec.c
blobfb96a4c72121b6bc67b02c378be7e17e15ee10f2
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <ec/acpi/ec.h>
4 #include "ec.h"
6 #define CHAUSIE_EC_CMD 0x666
7 #define CHAUSIE_EC_DATA 0x662
9 #define EC_GPIO_3_ADDR 0xA3
10 #define EC_GPIO_LOM_RESET_AUX BIT(1)
12 #define EC_GPIO_7_ADDR 0xA7
13 #define EC_GPIO_DT_PWREN BIT(2)
14 #define EC_GPIO_WWAN_MODULE_RST BIT(5)
16 #define EC_GPIO_8_ADDR 0xA8
17 #define EC_GPIO_SMBUS0_EN BIT(0)
19 #define EC_GPIO_A_ADDR 0xAA
20 #define EC_GPIO_WWAN_PWREN BIT(3)
21 #define EC_GPIO_WLAN_PWREN BIT(4)
22 #define EC_GPIO_M2_SSD0_PWREN BIT(6)
23 #define EC_GPIO_LOM_PWREN BIT(7)
25 #define EC_GPIO_B_ADDR 0xAB
26 #define EC_GPIO_WL_RADIO_DIS BIT(0)
27 #define EC_GPIO_BT_RADIO_DIS BIT(2)
28 #define EC_GPIO_GNSS_RADIO_DIS_N BIT(5)
29 #define EC_GPIO_MAIN_RADIO_DIS_N BIT(6)
30 #define EC_GPIO_WWAN_POWER_OFF_N BIT(7)
32 #define EC_GPIO_C_ADDR 0xAC
33 #define EC_GPIO_DT_N_WLAN_SW BIT(1)
34 #define EC_GPIO_MP2_SEL BIT(2)
35 #define EC_GPIO_WWAN_N_LOM_SW BIT(3)
37 #define EC_SW02_ADDR 0xB7
38 #define EC_SW02_MS BIT(7)
40 static void configure_ec_gpio(void)
42 uint8_t tmp;
44 tmp = ec_read(EC_GPIO_3_ADDR);
45 tmp |= EC_GPIO_LOM_RESET_AUX;
46 ec_write(EC_GPIO_3_ADDR, tmp);
48 tmp = ec_read(EC_GPIO_7_ADDR);
49 tmp |= EC_GPIO_WWAN_MODULE_RST | EC_GPIO_DT_PWREN;
50 ec_write(EC_GPIO_7_ADDR, tmp);
52 tmp = ec_read(EC_GPIO_8_ADDR);
53 tmp |= EC_GPIO_SMBUS0_EN;
54 ec_write(EC_GPIO_8_ADDR, tmp);
56 tmp = ec_read(EC_GPIO_A_ADDR);
57 tmp |= EC_GPIO_M2_SSD0_PWREN | EC_GPIO_LOM_PWREN;
58 tmp |= EC_GPIO_WLAN_PWREN | EC_GPIO_WWAN_PWREN;
59 ec_write(EC_GPIO_A_ADDR, tmp);
61 tmp = ec_read(EC_GPIO_B_ADDR);
62 tmp |= EC_GPIO_GNSS_RADIO_DIS_N | EC_GPIO_MAIN_RADIO_DIS_N;
63 tmp |= EC_GPIO_WWAN_POWER_OFF_N;
64 tmp &= ~EC_GPIO_WL_RADIO_DIS & ~EC_GPIO_BT_RADIO_DIS;
65 ec_write(EC_GPIO_B_ADDR, tmp);
67 tmp = ec_read(EC_GPIO_C_ADDR);
68 tmp |= EC_GPIO_WWAN_N_LOM_SW | EC_GPIO_MP2_SEL | EC_GPIO_DT_N_WLAN_SW;
69 ec_write(EC_GPIO_C_ADDR, tmp);
71 tmp = ec_read(EC_SW02_ADDR);
72 tmp |= EC_SW02_MS;
73 ec_write(EC_SW02_ADDR, tmp);
76 void chausie_ec_init(void)
78 ec_set_ports(CHAUSIE_EC_CMD, CHAUSIE_EC_DATA);
79 configure_ec_gpio();