123 lines
2.6 KiB
C
123 lines
2.6 KiB
C
/* 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_
|