Skip to content

Commit 3e2d128

Browse files
LeoCX-Tsaikiram9
authored andcommitted
fwk: 16-inch: add eeprom fan always on feature
if eeprom have set fan always on flag keep the fan running at the minimum RPM. BRANCH=fwk-tulip-29116 BUG=https://app.clickup.com/t/86ewgbrc4 TEST=test on lotus, write the GPU eeprom and reload the eeprom check unit at idle fan will keep min rpm. Signed-off-by: LeoCX_Tsai <LeoCX_Tsai@compal.com> Signed-off-by: Kieran Levin <ktl@frame.work>
1 parent d2827dd commit 3e2d128

2 files changed

Lines changed: 22 additions & 9 deletions

File tree

zephyr/program/framework/include/lotus/gpu_configuration.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ struct gpu_cfg_custom_temp {
165165
uint16_t temp_fan_max;
166166
} __packed;
167167

168+
/* gpu_cfg_fan flags */
169+
enum gpu_cfg_fan_flag {
170+
GPU_CFG_FAN_FLAG_ALWAYS_ON = 0x01,
171+
};
172+
168173
struct gpu_cfg_fan {
169174
uint8_t idx;
170175
uint8_t flags;

zephyr/program/framework/lotus/src/thermal.c

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
uint16_t board_fan_max[2];
2828
uint16_t board_fan_min[2];
29-
29+
uint8_t board_fan_flags[2];
3030
#define FAN_STOP_DELAY_S (5 * SECOND)
3131

3232
#define TEMP_APU TEMP_SENSOR_ID(DT_NODELABEL(temp_sensor_apu))
@@ -64,10 +64,13 @@ void fan_configure_gpu(struct gpu_cfg_fan *fan) {
6464
board_fan_max[1] = 0;
6565
board_fan_min[0] = 0;
6666
board_fan_min[1] = 0;
67+
board_fan_flags[0] = 0;
68+
board_fan_flags[1] = 0;
6769
} else {
6870
if (fan->idx < 2) {
6971
board_fan_max[fan->idx] = fan->max_rpm;
7072
board_fan_min[fan->idx] = fan->min_rpm;
73+
board_fan_flags[fan->idx] = fan->flags;
7174
}
7275
}
7376
}
@@ -110,16 +113,21 @@ int fan_percent_to_rpm(int fan_index, int temp_ratio)
110113
int max = fans[fan_index].rpm->rpm_max;
111114
int min = fans[fan_index].rpm->rpm_min;
112115

116+
/* Switch the fan configuration when gpu is present */
117+
if (board_fan_max[fan_index]) {
118+
max = board_fan_max[fan_index];
119+
}
120+
121+
if (board_fan_min[fan_index]) {
122+
min = board_fan_min[fan_index];
123+
}
124+
113125
if (temp_ratio <= 0) {
114-
rpm = 0;
126+
if (board_fan_flags[fan_index] & GPU_CFG_FAN_FLAG_ALWAYS_ON)
127+
rpm = min;
128+
else
129+
rpm = 0;
115130
} else {
116-
/* Switch the fan configuration when gpu is present */
117-
if (board_fan_max[fan_index]) {
118-
max = board_fan_max[fan_index];
119-
}
120-
if (board_fan_min[fan_index]) {
121-
min = board_fan_min[fan_index];
122-
}
123131
rpm = ((temp_ratio - 1) * max + (100 - temp_ratio) * min) / 99;
124132
}
125133

0 commit comments

Comments
 (0)