xref: /aosp_15_r20/external/coreboot/src/superio/fintek/f71808a/f71808a_multifunc.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #include <device/device.h>
4 #include <device/pnp.h>
5 #include "chip.h"
6 #include "fintek_internal.h"
7 
8 #define MULTI_FUNC_SEL_REG0 0x28
9 #define MULTI_FUNC_SEL_REG1 0x29
10 #define MULTI_FUNC_SEL_REG2 0x2A
11 #define MULTI_FUNC_SEL_REG3 0x2B
12 #define MULTI_FUNC_SEL_REG4 0x2C
13 
f71808a_multifunc_init(struct device * dev)14 void f71808a_multifunc_init(struct device *dev)
15 {
16 	const struct superio_fintek_f71808a_config *conf = dev->chip_info;
17 
18 	pnp_enter_conf_mode(dev);
19 
20 	/* multi-func select reg0 */
21 	pnp_write_config(dev, MULTI_FUNC_SEL_REG0,
22 			conf->multi_function_register_0);
23 
24 	/* multi-func select reg1 */
25 	pnp_write_config(dev, MULTI_FUNC_SEL_REG1,
26 			conf->multi_function_register_1);
27 
28 	/* multi-func select reg2 */
29 	pnp_write_config(dev, MULTI_FUNC_SEL_REG2,
30 			conf->multi_function_register_2);
31 
32 	/* multi-func select reg3 */
33 	pnp_write_config(dev, MULTI_FUNC_SEL_REG3,
34 			conf->multi_function_register_3);
35 
36 	/* multi-func select reg4 */
37 	pnp_write_config(dev, MULTI_FUNC_SEL_REG4,
38 			conf->multi_function_register_4);
39 
40 	pnp_exit_conf_mode(dev);
41 }
42