coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
fan_init.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <bootstate.h>
5 #include <amdblocks/lpc.h>
6 #include <device/pci_ops.h>
7 #include <soc/pci_devs.h>
8 
9 #define CPU_FAN 1
10 #define SYSTEM_FAN 2
11 
12 /* Boundaries in celsius, sections in percent */
14  80,
15  65,
16  50,
17  35
18 };
19 
21  70,
22  55,
23  40,
24  25
25 };
26 
28  100,
29  85,
30  70,
31  55,
32  40
33 };
34 
36  100,
37  85,
38  70,
39  55,
40  40
41 };
42 
43 struct fintek_fan cpu_fan = {
44  CPU_FAN,
56 };
57 
58 struct fintek_fan system_fan = {
59  SYSTEM_FAN,
71 };
72 
73 static void init_fan_control(void *unused)
74 {
75  u32 temp;
76  /* Open a LPC IO access to 0x0220-0x0227 */
80 
81  set_fan(&cpu_fan);
83 }
84 
@ BS_POST_DEVICE
Definition: bootstate.h:84
@ BS_ON_ENTRY
Definition: bootstate.h:95
int set_fan(struct fintek_fan *fan_init)
Definition: fan_api_call.c:13
#define FINTEK_BOUNDARIES_SIZE
Definition: fan_control.h:113
@ FAN_TYPE_PWM_PUSH_PULL
Definition: fan_control.h:23
@ FAN_TYPE_DAC_POWER
Definition: fan_control.h:24
@ FAN_PWM_FREQ_23500
Definition: fan_control.h:39
@ FAN_FOLLOW_INTERPOLATION
Definition: fan_control.h:74
@ FAN_DOWN_RATE_10HZ
Definition: fan_control.h:65
@ IGNORE_SENSOR
Definition: fan_control.h:9
@ EXTERNAL_SENSOR2
Definition: fan_control.h:11
#define FINTEK_SECTIONS_SIZE
Definition: fan_control.h:121
@ FAN_UP_RATE_10HZ
Definition: fan_control.h:56
@ TEMP_SENSOR_DEFAULT
Definition: fan_control.h:19
@ TEMP_SENSOR_BJT
Definition: fan_control.h:18
@ FAN_MODE_DEFAULT
Definition: fan_control.h:35
@ FAN_TEMP_EXTERNAL_2
Definition: fan_control.h:48
@ FAN_TEMP_TSI
Definition: fan_control.h:49
struct fintek_fan system_fan
Definition: fan_init.c:58
static u8 cpu_boudaries[FINTEK_BOUNDARIES_SIZE]
Definition: fan_init.c:13
static u8 system_section[FINTEK_SECTIONS_SIZE]
Definition: fan_init.c:35
#define CPU_FAN
Definition: fan_init.c:9
struct fintek_fan cpu_fan
Definition: fan_init.c:43
BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_ENTRY, init_fan_control, NULL)
static u8 system_boudaries[FINTEK_BOUNDARIES_SIZE]
Definition: fan_init.c:20
static void init_fan_control(void *unused)
Definition: fan_init.c:73
#define SYSTEM_FAN
Definition: fan_init.c:10
static u8 cpu_section[FINTEK_SECTIONS_SIZE]
Definition: fan_init.c:27
static __always_inline void pci_write_config32(const struct device *dev, u16 reg, u32 val)
Definition: pci_ops.h:76
static __always_inline u32 pci_read_config32(const struct device *dev, u16 reg)
Definition: pci_ops.h:58
#define SOC_LPC_DEV
Definition: pci_devs.h:124
#define LPC_IO_PORT_DECODE_ENABLE
Definition: lpc.h:16
#define DECODE_ENABLE_SERIAL_PORT2
Definition: lpc.h:25
#define NULL
Definition: stddef.h:19
uint32_t u32
Definition: stdint.h:51
uint8_t u8
Definition: stdint.h:45