| /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| |
| /* |
| * msi-ec: MSI laptops' embedded controller driver. |
| * |
| * Copyright (C) 2023 Jose Angel Pastrana <japp0005@red.ujaen.es> |
| * Copyright (C) 2023 Aakash Singh <mail@singhaakash.dev> |
| * Copyright (C) 2023 Nikita Kravets <teackot@gmail.com> |
| */ |
| |
| #ifndef _MSI_EC_H_ |
| #define _MSI_EC_H_ |
| |
| #include <linux/types.h> |
| |
| #define MSI_EC_DRIVER_NAME "msi-ec" |
| |
| #define MSI_EC_ADDR_UNKNOWN 0xff01 // unknown address |
| #define MSI_EC_ADDR_UNSUPP 0xff01 // unsupported parameter |
| |
| // Firmware info addresses are universal |
| #define MSI_EC_FW_VERSION_ADDRESS 0xa0 |
| #define MSI_EC_FW_DATE_ADDRESS 0xac |
| #define MSI_EC_FW_TIME_ADDRESS 0xb4 |
| #define MSI_EC_FW_VERSION_LENGTH 12 |
| #define MSI_EC_FW_DATE_LENGTH 8 |
| #define MSI_EC_FW_TIME_LENGTH 8 |
| |
| struct msi_ec_charge_control_conf { |
| int address; |
| int offset_start; |
| int offset_end; |
| int range_min; |
| int range_max; |
| }; |
| |
| struct msi_ec_webcam_conf { |
| int address; |
| int block_address; |
| int bit; |
| }; |
| |
| struct msi_ec_fn_win_swap_conf { |
| int address; |
| int bit; |
| }; |
| |
| struct msi_ec_cooler_boost_conf { |
| int address; |
| int bit; |
| }; |
| |
| #define MSI_EC_MODE_NULL { NULL, 0 } |
| struct msi_ec_mode { |
| const char *name; |
| int value; |
| }; |
| |
| struct msi_ec_shift_mode_conf { |
| int address; |
| struct msi_ec_mode modes[5]; // fixed size for easier hard coding |
| }; |
| |
| struct msi_ec_super_battery_conf { |
| int address; |
| int mask; |
| }; |
| |
| struct msi_ec_fan_mode_conf { |
| int address; |
| struct msi_ec_mode modes[5]; // fixed size for easier hard coding |
| }; |
| |
| struct msi_ec_cpu_conf { |
| int rt_temp_address; |
| int rt_fan_speed_address; // realtime |
| int rt_fan_speed_base_min; |
| int rt_fan_speed_base_max; |
| int bs_fan_speed_address; // basic |
| int bs_fan_speed_base_min; |
| int bs_fan_speed_base_max; |
| }; |
| |
| struct msi_ec_gpu_conf { |
| int rt_temp_address; |
| int rt_fan_speed_address; // realtime |
| }; |
| |
| struct msi_ec_led_conf { |
| int micmute_led_address; |
| int mute_led_address; |
| int bit; |
| }; |
| |
| #define MSI_EC_KBD_BL_STATE_MASK 0x3 |
| struct msi_ec_kbd_bl_conf { |
| int bl_mode_address; |
| int bl_modes[2]; |
| int max_mode; |
| |
| int bl_state_address; |
| int state_base_value; |
| int max_state; |
| }; |
| |
| struct msi_ec_conf { |
| const char * const *allowed_fw; |
| |
| struct msi_ec_charge_control_conf charge_control; |
| struct msi_ec_webcam_conf webcam; |
| struct msi_ec_fn_win_swap_conf fn_win_swap; |
| struct msi_ec_cooler_boost_conf cooler_boost; |
| struct msi_ec_shift_mode_conf shift_mode; |
| struct msi_ec_super_battery_conf super_battery; |
| struct msi_ec_fan_mode_conf fan_mode; |
| struct msi_ec_cpu_conf cpu; |
| struct msi_ec_gpu_conf gpu; |
| struct msi_ec_led_conf leds; |
| struct msi_ec_kbd_bl_conf kbd_bl; |
| }; |
| |
| #endif // _MSI_EC_H_ |