1 /* SPDX-License-Identifier: GPL-2.0-only */
3 /* TODO: Update for birman */
5 #include <ec/acpi/ec.h>
8 #define BIRMAN_EC_CMD 0x666
9 #define BIRMAN_EC_DATA 0x662
11 #define EC_GPIO_3_ADDR 0xA3
12 #define EC_GPIO_LOM_RESET_AUX BIT(1)
14 #define EC_GPIO_7_ADDR 0xA7
15 #define EC_GPIO_DT_PWREN BIT(2)
16 #define EC_GPIO_WWAN_MODULE_RST BIT(5)
18 #define EC_GPIO_8_ADDR 0xA8
19 #define EC_GPIO_SMBUS0_EN BIT(0)
21 #define EC_GPIO_A_ADDR 0xAA
22 #define EC_GPIO_WWAN_PWREN BIT(3)
23 #define EC_GPIO_M2_SSD0_PWREN BIT(6)
24 #define EC_GPIO_LOM_PWREN BIT(7)
26 #define EC_GPIO_C_ADDR 0xAC
27 #define EC_GPIO_DT_N_WLAN_SW BIT(1)
28 #define EC_GPIO_MP2_SEL BIT(2)
29 #define EC_GPIO_WWAN_N_LOM_SW BIT(3)
31 #define EC_SW02_ADDR 0xB7
32 #define EC_SW02_MS BIT(7)
34 static void configure_ec_gpio(void)
38 tmp
= ec_read(EC_GPIO_3_ADDR
);
39 tmp
|= EC_GPIO_LOM_RESET_AUX
;
40 ec_write(EC_GPIO_3_ADDR
, tmp
);
42 tmp
= ec_read(EC_GPIO_7_ADDR
);
43 tmp
|= EC_GPIO_WWAN_MODULE_RST
| EC_GPIO_DT_PWREN
;
44 ec_write(EC_GPIO_7_ADDR
, tmp
);
46 tmp
= ec_read(EC_GPIO_8_ADDR
);
47 tmp
|= EC_GPIO_SMBUS0_EN
;
48 ec_write(EC_GPIO_8_ADDR
, tmp
);
50 tmp
= ec_read(EC_GPIO_A_ADDR
);
51 tmp
|= EC_GPIO_M2_SSD0_PWREN
| EC_GPIO_LOM_PWREN
| EC_GPIO_WWAN_PWREN
;
52 ec_write(EC_GPIO_A_ADDR
, tmp
);
54 tmp
= ec_read(EC_GPIO_C_ADDR
);
55 tmp
|= EC_GPIO_WWAN_N_LOM_SW
| EC_GPIO_MP2_SEL
| EC_GPIO_DT_N_WLAN_SW
;
56 ec_write(EC_GPIO_C_ADDR
, tmp
);
58 tmp
= ec_read(EC_SW02_ADDR
);
60 ec_write(EC_SW02_ADDR
, tmp
);
63 void birman_ec_init(void)
65 ec_set_ports(BIRMAN_EC_CMD
, BIRMAN_EC_DATA
);