| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- /* 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_
|