coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
fan_api_call.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <console/console.h>
4 #include "fan_control.h"
5 
6 static int check_status(int status)
7 {
8  if (status < HWM_STATUS_SUCCESS)
9  return status;
10  return HWM_STATUS_SUCCESS; /* positive values are warnings only */
11 }
12 
13 int set_fan(struct fintek_fan *fan_init)
14 {
15  int s;
16 
17  s = set_sensor_type(CONFIG_HWM_PORT, fan_init->sensor, fan_init->stype);
19  return s;
20 
21  s = set_fan_temperature_source(CONFIG_HWM_PORT, fan_init->fan, fan_init->temp_source);
23  return s;
24 
25  s = set_fan_type_mode(CONFIG_HWM_PORT, fan_init->fan, fan_init->ftype, fan_init->fmode);
27  return s;
28 
29  s = set_pwm_frequency(CONFIG_HWM_PORT, fan_init->fan, fan_init->fan_freq);
31  return s;
32 
33  s = set_fan_speed_change_rate(CONFIG_HWM_PORT, fan_init->fan, fan_init->rate_up,
34  fan_init->rate_down);
36  return s;
37 
38  s = set_fan_follow(CONFIG_HWM_PORT, fan_init->fan, fan_init->follow);
40  return s;
41 
42  s = set_sections(CONFIG_HWM_PORT, fan_init->fan, fan_init->boundaries,
43  fan_init->sections);
45  return s;
46 
47  printk(BIOS_DEBUG, "Fan %d completed\n", fan_init->fan);
48  return HWM_STATUS_SUCCESS;
49 }
#define printk(level,...)
Definition: stdlib.h:16
int set_fan(struct fintek_fan *fan_init)
Definition: fan_api_call.c:13
static int check_status(int status)
Definition: fan_api_call.c:6
#define HWM_STATUS_SUCCESS
Definition: fan_control.h:92
int set_sections(u16 base_address, u8 fan, u8 *boundaries, u8 *sections)
Definition: fan_control.c:250
int set_fan_speed_change_rate(u16 base_address, u8 fan, fan_rate_up rate_up, fan_rate_down rate_down)
Definition: fan_control.c:291
int set_pwm_frequency(u16 base_address, u8 fan, fan_pwm_freq frequency)
Definition: fan_control.c:224
int set_fan_temperature_source(u16 base_address, u8 fan, fan_temp_source source)
Definition: fan_control.c:170
int set_fan_type_mode(u16 base_address, u8 fan, fan_type type, fan_mode mode)
Definition: fan_control.c:203
int set_sensor_type(u16 base_address, external_sensor sensor, temp_sensor_type type)
Definition: fan_control.c:139
int set_fan_follow(u16 base_address, u8 fan, fan_follow follow)
Definition: fan_control.c:338
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
Definition: loglevel.h:128
temp_sensor_type stype
Definition: fan_control.h:80
uint8_t * sections
Definition: fan_control.h:89
fan_temp_source temp_source
Definition: fan_control.h:81
external_sensor sensor
Definition: fan_control.h:79
fan_rate_down rate_down
Definition: fan_control.h:86
uint8_t fan
Definition: fan_control.h:78
fan_pwm_freq fan_freq
Definition: fan_control.h:84
fan_rate_up rate_up
Definition: fan_control.h:85
fan_mode fmode
Definition: fan_control.h:83
fan_follow follow
Definition: fan_control.h:87
uint8_t * boundaries
Definition: fan_control.h:88
fan_type ftype
Definition: fan_control.h:82
#define s(param, src_bits, pmcreg, dst_bits)