| /* Copyright 2022 The ChromiumOS Authors |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| * |
| * Nvidia GPU D-Notify driver header file |
| */ |
| |
| #ifndef DRIVER_NVIDIA_GPU_H |
| #define DRIVER_NVIDIA_GPU_H |
| |
| #define NVIDIA_GPU_ACOFF_DURATION (100 * MSEC) |
| |
| enum d_notify_level { |
| D_NOTIFY_1 = 0, |
| D_NOTIFY_2, |
| D_NOTIFY_3, |
| D_NOTIFY_4, |
| D_NOTIFY_5, |
| D_NOTIFY_COUNT, |
| }; |
| |
| enum d_notify_policy_type { |
| /* High- or low-power A/C */ |
| D_NOTIFY_AC, |
| /* Too low of A/C to still charge or DC with high battery SOC */ |
| D_NOTIFY_AC_DC, |
| /* DC with medium or low battery SOC */ |
| D_NOTIFY_DC, |
| }; |
| |
| struct d_notify_policy { |
| enum d_notify_policy_type power_source; |
| union { |
| struct { |
| unsigned int min_charger_watts; |
| } ac; |
| struct { |
| unsigned int max_battery_soc; |
| } dc; |
| }; |
| }; |
| |
| #define AC_ATLEAST_W(W) \ |
| { \ |
| .power_source = D_NOTIFY_AC, .ac.min_charger_watts = (W), \ |
| } |
| |
| #define AC_DC \ |
| { \ |
| .power_source = D_NOTIFY_AC_DC, \ |
| } |
| |
| #define DC_ATMOST_SOC(S) \ |
| { \ |
| .power_source = D_NOTIFY_DC, .dc.max_battery_soc = (S), \ |
| } |
| |
| void nvidia_gpu_init_policy(const struct d_notify_policy *policies); |
| |
| /** |
| * Notify the host of assertion or deassertion of GPU over temperature. |
| * |
| * @param assert True for assert. False for deassert. |
| */ |
| void nvidia_gpu_over_temp(int assert); |
| |
| #endif /* DRIVER_NVIDIA_GPU_H */ |